@saccolabs/tars 1.36.0 → 1.37.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/dist/channels/channel-manager.d.ts +5 -0
- package/dist/channels/channel-manager.js +7 -0
- package/dist/channels/channel-manager.js.map +1 -1
- package/dist/channels/tui/tui-channel.d.ts +98 -0
- package/dist/channels/tui/tui-channel.js +362 -0
- package/dist/channels/tui/tui-channel.js.map +1 -0
- package/dist/channels/tui/tui-renderer.d.ts +49 -0
- package/dist/channels/tui/tui-renderer.js +112 -0
- package/dist/channels/tui/tui-renderer.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +9 -0
- package/dist/cli/commands/chat.js +51 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/suppress-warnings.d.ts +1 -0
- package/dist/cli/suppress-warnings.js +9 -0
- package/dist/cli/suppress-warnings.js.map +1 -0
- package/dist/supervisor/bootstrap.d.ts +48 -0
- package/dist/supervisor/bootstrap.js +596 -0
- package/dist/supervisor/bootstrap.js.map +1 -0
- package/dist/supervisor/main.js +5 -537
- package/dist/supervisor/main.js.map +1 -1
- package/dist/supervisor/mcp-bridge.js +10 -1
- package/dist/supervisor/mcp-bridge.js.map +1 -1
- package/dist/utils/logger.d.ts +5 -0
- package/dist/utils/logger.js +23 -0
- package/dist/utils/logger.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Terminal rendering utilities and themes for the Tars TUI chat interface.
|
|
4
|
+
*/
|
|
5
|
+
export class TuiRenderer {
|
|
6
|
+
/**
|
|
7
|
+
* Render the ASCII logo in cyan.
|
|
8
|
+
*/
|
|
9
|
+
static renderLogo() {
|
|
10
|
+
const logo = [
|
|
11
|
+
' ████████╗ █████╗ ██████╗ ███████╗',
|
|
12
|
+
' ╚══██╔══╝██╔══██╗██╔══██╗██╔════╝',
|
|
13
|
+
' ██║ ███████║██████╔╝███████╗',
|
|
14
|
+
' ██║ ██╔══██║██╔══██╗╚════██║',
|
|
15
|
+
' ██║ ██║ ██║██║ ██║███████║',
|
|
16
|
+
' ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝'
|
|
17
|
+
];
|
|
18
|
+
return logo.map((line) => chalk.cyan(line)).join('\n');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Render the session metadata header.
|
|
22
|
+
*/
|
|
23
|
+
static renderHeader(opts) {
|
|
24
|
+
const lines = [
|
|
25
|
+
chalk.dim(` v${opts.version} · ${opts.provider}/${opts.model} · ${(opts.contextWindow / 1000).toFixed(0)}k context`),
|
|
26
|
+
'',
|
|
27
|
+
chalk.dim(' Type a message to begin. /help for commands, /exit to quit.'),
|
|
28
|
+
chalk.dim(' ' + '─'.repeat(56))
|
|
29
|
+
];
|
|
30
|
+
return lines.join('\n');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Tars custom SelectListTheme.
|
|
34
|
+
*/
|
|
35
|
+
static selectListTheme = {
|
|
36
|
+
selectedPrefix: (text) => chalk.cyan(text),
|
|
37
|
+
selectedText: (text) => chalk.cyan.bold(text),
|
|
38
|
+
description: (text) => chalk.dim(text),
|
|
39
|
+
scrollInfo: (text) => chalk.dim(text),
|
|
40
|
+
noMatch: (text) => chalk.dim(text)
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Tars custom MarkdownTheme.
|
|
44
|
+
*/
|
|
45
|
+
static markdownTheme = {
|
|
46
|
+
heading: (text) => chalk.bold.cyan(text),
|
|
47
|
+
link: (text) => chalk.blue.underline(text),
|
|
48
|
+
linkUrl: (text) => chalk.dim(text),
|
|
49
|
+
code: (text) => chalk.yellow(text),
|
|
50
|
+
codeBlock: (text) => chalk.yellow(text),
|
|
51
|
+
codeBlockBorder: (text) => chalk.dim(text),
|
|
52
|
+
quote: (text) => chalk.italic.dim(text),
|
|
53
|
+
quoteBorder: (text) => chalk.dim(text),
|
|
54
|
+
hr: (text) => chalk.dim('─'.repeat(40)),
|
|
55
|
+
listBullet: (text) => chalk.cyan(text),
|
|
56
|
+
bold: (text) => chalk.bold(text),
|
|
57
|
+
italic: (text) => chalk.italic(text),
|
|
58
|
+
strikethrough: (text) => chalk.strikethrough(text),
|
|
59
|
+
underline: (text) => chalk.underline(text)
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Tars custom EditorTheme.
|
|
63
|
+
*/
|
|
64
|
+
static editorTheme = {
|
|
65
|
+
borderColor: (text) => chalk.dim(text),
|
|
66
|
+
selectList: TuiRenderer.selectListTheme
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Render the token stats in the footer.
|
|
70
|
+
*/
|
|
71
|
+
static renderFooter(tokens, contextLimit, cost) {
|
|
72
|
+
const percentage = ((tokens / contextLimit) * 100).toFixed(1);
|
|
73
|
+
const costStr = (cost * 100).toFixed(1);
|
|
74
|
+
return chalk.dim(` ${tokens.toLocaleString()} / ${contextLimit.toLocaleString()} (${percentage}%) | ${costStr}%`);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Format basic Markdown syntax (bold, inline code) for non-TUI fallback output.
|
|
78
|
+
*/
|
|
79
|
+
static formatMarkdown(text) {
|
|
80
|
+
if (!text)
|
|
81
|
+
return '';
|
|
82
|
+
return text
|
|
83
|
+
.replace(/\*\*(.*?)\*\*/g, (_, p1) => chalk.bold(p1))
|
|
84
|
+
.replace(/`(.*?)`/g, (_, p1) => chalk.yellow(p1));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Count the number of terminal lines required to display the text, accounting for wrapping.
|
|
88
|
+
*/
|
|
89
|
+
static countLines(text, columns = 80) {
|
|
90
|
+
if (!text)
|
|
91
|
+
return 0;
|
|
92
|
+
const lines = text.split('\n');
|
|
93
|
+
let count = 0;
|
|
94
|
+
for (const line of lines) {
|
|
95
|
+
const stripped = line.replace(/\x1b\[[0-9;]*m/g, '');
|
|
96
|
+
count += Math.max(1, Math.ceil(stripped.length / columns));
|
|
97
|
+
}
|
|
98
|
+
return count;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Clear the specified number of lines from the terminal.
|
|
102
|
+
*/
|
|
103
|
+
static clearLines(stream, linesCount) {
|
|
104
|
+
if (linesCount <= 0)
|
|
105
|
+
return;
|
|
106
|
+
for (let i = 0; i < linesCount; i++) {
|
|
107
|
+
stream.write('\x1b[A\x1b[K');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export default TuiRenderer;
|
|
112
|
+
//# sourceMappingURL=tui-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-renderer.js","sourceRoot":"","sources":["../../../src/channels/tui/tui-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `tars chat` — Start an interactive terminal chat session.
|
|
3
|
+
*
|
|
4
|
+
* Runs the full supervisor in the foreground with the TUI channel attached.
|
|
5
|
+
* Shares the same Pi session as the PM2 background supervisor.
|
|
6
|
+
*/
|
|
7
|
+
export declare function chat(options?: {
|
|
8
|
+
discord?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { bootstrap, wireMessageRouting } from '../../supervisor/bootstrap.js';
|
|
3
|
+
import { TuiChannel } from '../../channels/tui/tui-channel.js';
|
|
4
|
+
import logger from '../../utils/logger.js';
|
|
5
|
+
/**
|
|
6
|
+
* `tars chat` — Start an interactive terminal chat session.
|
|
7
|
+
*
|
|
8
|
+
* Runs the full supervisor in the foreground with the TUI channel attached.
|
|
9
|
+
* Shares the same Pi session as the PM2 background supervisor.
|
|
10
|
+
*/
|
|
11
|
+
export async function chat(options = {}) {
|
|
12
|
+
// Set supervisor mode so the bootstrap runs correctly
|
|
13
|
+
process.env.TARS_SUPERVISOR_MODE = 'true';
|
|
14
|
+
process.env.TARS_CHAT_MODE = 'true';
|
|
15
|
+
try {
|
|
16
|
+
const skipDiscord = options.discord === false;
|
|
17
|
+
const { config, tarsEngine, sessionManager, supervisor, channelManager, heartbeat, cron, dashboard } = await bootstrap({
|
|
18
|
+
skipDashboard: true // Don't install/hydrate dashboard in chat mode
|
|
19
|
+
});
|
|
20
|
+
// Create the TUI channel
|
|
21
|
+
const tuiChannel = new TuiChannel({
|
|
22
|
+
onExit: async () => {
|
|
23
|
+
logger.info('🛑 Shutting down from TUI...');
|
|
24
|
+
await channelManager.stop();
|
|
25
|
+
heartbeat.stop();
|
|
26
|
+
cron.stop();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// Register the TUI channel
|
|
30
|
+
channelManager.registerChannel(tuiChannel);
|
|
31
|
+
// Wire message routing with TUI streaming support
|
|
32
|
+
wireMessageRouting(channelManager, supervisor, sessionManager, tarsEngine, config, tuiChannel);
|
|
33
|
+
// Start services
|
|
34
|
+
await channelManager.start();
|
|
35
|
+
await heartbeat.start();
|
|
36
|
+
await cron.start();
|
|
37
|
+
// Graceful shutdown on SIGINT (Ctrl+C)
|
|
38
|
+
process.on('SIGINT', async () => {
|
|
39
|
+
console.log(chalk.dim('\n\n👋 Goodbye.\n'));
|
|
40
|
+
await channelManager.stop();
|
|
41
|
+
heartbeat.stop();
|
|
42
|
+
cron.stop();
|
|
43
|
+
process.exit(0);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error(chalk.red(`💥 Failed to start chat: ${error.message}`));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAiC,EAAE;IAC1D,sDAAsD;IACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;IAEpC,IAAI,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;QAE9C,MAAM,EACF,MAAM,EACN,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,IAAI,EACJ,SAAS,EACZ,GAAG,MAAM,SAAS,CAAC;YAChB,aAAa,EAAE,IAAI,CAAC,+CAA+C;SACtE,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;YAC9B,MAAM,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;SACJ,CAAC,CAAC;QAEH,2BAA2B;QAC3B,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAE3C,kDAAkD;QAClD,kBAAkB,CACd,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,MAAM,EACN,UAAU,CACb,CAAC;QAEF,iBAAiB;QACjB,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,uCAAuC;QACvC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC5C,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import './suppress-warnings.js';
|
package/dist/cli/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import './suppress-warnings.js';
|
|
2
3
|
import { Command } from 'commander';
|
|
3
4
|
import { setup } from './commands/setup.js';
|
|
4
5
|
import { start } from './commands/start.js';
|
|
@@ -25,6 +26,14 @@ program
|
|
|
25
26
|
.option('--role <role>', 'Instance role')
|
|
26
27
|
.action(start);
|
|
27
28
|
program.command('stop').description('Stop the assistant supervisor').action(stop);
|
|
29
|
+
program
|
|
30
|
+
.command('chat')
|
|
31
|
+
.description('Start an interactive terminal chat session')
|
|
32
|
+
.option('--no-discord', 'Disable Discord channel in chat mode')
|
|
33
|
+
.action(async (options) => {
|
|
34
|
+
const { chat } = await import('./commands/chat.js');
|
|
35
|
+
return chat(options);
|
|
36
|
+
});
|
|
28
37
|
program
|
|
29
38
|
.command('restart')
|
|
30
39
|
.description('Check for updates and restart the assistant')
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Suppress SQLite experimental warnings early in the module resolution phase
|
|
2
|
+
process.on('warning', (warning) => {
|
|
3
|
+
if (warning.name === 'ExperimentalWarning' && warning.message.includes('SQLite')) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
console.warn(warning.stack || warning.message);
|
|
7
|
+
});
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=suppress-warnings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suppress-warnings.js","sourceRoot":"","sources":["../../src/cli/suppress-warnings.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;IAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,OAAO;IACX,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Config } from '../config/config.js';
|
|
2
|
+
import { TarsEngine } from './tars-engine.js';
|
|
3
|
+
import { SessionManager } from './session-manager.js';
|
|
4
|
+
import { Supervisor } from './supervisor.js';
|
|
5
|
+
import { HeartbeatService } from './heartbeat-service.js';
|
|
6
|
+
import { CronService } from './cron-service.js';
|
|
7
|
+
import { DashboardService } from './dashboard-service.js';
|
|
8
|
+
import { ChannelManager } from '../channels/channel-manager.js';
|
|
9
|
+
import { TuiChannel } from '../channels/tui/tui-channel.js';
|
|
10
|
+
/**
|
|
11
|
+
* Result of the bootstrap process. Contains all initialized services.
|
|
12
|
+
*/
|
|
13
|
+
export interface BootstrapResult {
|
|
14
|
+
config: Config;
|
|
15
|
+
tarsEngine: TarsEngine;
|
|
16
|
+
sessionManager: SessionManager;
|
|
17
|
+
supervisor: Supervisor;
|
|
18
|
+
channelManager: ChannelManager;
|
|
19
|
+
heartbeat: HeartbeatService;
|
|
20
|
+
cron: CronService;
|
|
21
|
+
dashboard: DashboardService;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Options to customize the bootstrap process.
|
|
25
|
+
*/
|
|
26
|
+
export interface BootstrapOptions {
|
|
27
|
+
/** Skip Discord channel initialization */
|
|
28
|
+
skipDiscord?: boolean;
|
|
29
|
+
/** Skip dashboard installation/hydration */
|
|
30
|
+
skipDashboard?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Shared supervisor bootstrap logic.
|
|
34
|
+
* Used by both main.ts (PM2 background) and chat.ts (foreground TUI).
|
|
35
|
+
*
|
|
36
|
+
* Returns all initialized services but does NOT start them.
|
|
37
|
+
* The caller is responsible for starting channels, heartbeat, cron, etc.
|
|
38
|
+
*/
|
|
39
|
+
export declare function bootstrap(options?: BootstrapOptions): Promise<BootstrapResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Wire the shared message routing logic onto a channel manager.
|
|
42
|
+
* Handles slash commands (/reset, /clear, /quota, /stats, /help) and
|
|
43
|
+
* forwards all other messages to the supervisor for AI processing.
|
|
44
|
+
*
|
|
45
|
+
* The optional `tuiChannel` parameter enables real-time token streaming
|
|
46
|
+
* when the active channel is a TUI (instead of Discord-style buffering).
|
|
47
|
+
*/
|
|
48
|
+
export declare function wireMessageRouting(channelManager: ChannelManager, supervisor: Supervisor, sessionManager: SessionManager, tarsEngine: TarsEngine, config: Config, tuiChannel?: TuiChannel): void;
|