@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.
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB;;OAEG;IACH,MAAM,CAAC,UAAU;QACb,MAAM,IAAI,GAAG;YACT,oCAAoC;YACpC,oCAAoC;YACpC,oCAAoC;YACpC,oCAAoC;YACpC,oCAAoC;YACpC,oCAAoC;SACvC,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,IAMnB;QACG,MAAM,KAAK,GAAG;YACV,KAAK,CAAC,GAAG,CACL,MAAM,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAC7G;YACD,EAAE;YACF,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC;YAC1E,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACnC,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAU,eAAe,GAAoB;QAC/C,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAClD,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACrD,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9C,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7C,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;KAC7C,CAAC;IAEF;;OAEG;IACH,MAAM,CAAU,aAAa,GAAkB;QAC3C,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAClD,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1C,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/C,eAAe,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAClD,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/C,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9C,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/C,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5C,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;QAC1D,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;KACrD,CAAC;IAEF;;OAEG;IACH,MAAM,CAAU,WAAW,GAAgB;QACvC,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9C,UAAU,EAAE,WAAW,CAAC,eAAe;KAC1C,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAc,EAAE,YAAoB,EAAE,IAAY;QAClE,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,GAAG,CACZ,KAAK,MAAM,CAAC,cAAc,EAAE,MAAM,YAAY,CAAC,cAAc,EAAE,KAAK,UAAU,QAAQ,OAAO,GAAG,CACnG,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAY;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI;aACN,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACpD,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,UAAkB,EAAE;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACrD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAA6B,EAAE,UAAkB;QAC/D,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;;AAEL,eAAe,WAAW,CAAC"}
@@ -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"}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export {};
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')
@@ -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;