rantera 0.0.0-stage → 0.1.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/agent.d.ts +11 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +65 -0
- package/dist/agent.js.map +1 -0
- package/dist/api.d.ts +22 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +114 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.d.ts +3 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +131 -0
- package/dist/auth.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +29 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +376 -0
- package/dist/index.js.map +1 -0
- package/dist/memory.d.ts +3 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +32 -0
- package/dist/memory.js.map +1 -0
- package/dist/tools/files.d.ts +4 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +86 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +44 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/shell.d.ts +2 -0
- package/dist/tools/shell.d.ts.map +1 -0
- package/dist/tools/shell.js +40 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/ui.d.ts +45 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +325 -0
- package/dist/ui.js.map +1 -0
- package/package.json +39 -4
- package/README.md +0 -3
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
const TIMEOUT_MS = 30_000;
|
|
3
|
+
const MAX_OUTPUT = 8_000;
|
|
4
|
+
// Commands that could cause irreversible damage — block them
|
|
5
|
+
const BLOCKED_PATTERNS = [
|
|
6
|
+
/rm\s+-rf\s+[/\\]/,
|
|
7
|
+
/rmdir\s+\/s/i,
|
|
8
|
+
/format\s+[a-z]:/i,
|
|
9
|
+
/dd\s+if=/,
|
|
10
|
+
/mkfs/,
|
|
11
|
+
/>\s*\/dev\/sd/,
|
|
12
|
+
/shutdown/i,
|
|
13
|
+
/reboot/i,
|
|
14
|
+
/del\s+\/[sf]/i,
|
|
15
|
+
];
|
|
16
|
+
export function runCommand(command, cwd) {
|
|
17
|
+
for (const pattern of BLOCKED_PATTERNS) {
|
|
18
|
+
if (pattern.test(command)) {
|
|
19
|
+
return Promise.resolve(`BLOCKED: '${command.slice(0, 60)}' matches a destructive command pattern and will not run.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return new Promise((resolve) => {
|
|
23
|
+
const isWindows = process.platform === "win32";
|
|
24
|
+
const [shell, flag] = isWindows ? ["cmd.exe", "/c"] : ["sh", "-c"];
|
|
25
|
+
const child = execFile(shell, [flag, command], { cwd, timeout: TIMEOUT_MS, maxBuffer: MAX_OUTPUT * 2 }, (err, stdout, stderr) => {
|
|
26
|
+
const out = (stdout + (stderr ? `\nSTDERR:\n${stderr}` : "")).trim();
|
|
27
|
+
const truncated = out.length > MAX_OUTPUT
|
|
28
|
+
? out.slice(0, MAX_OUTPUT) + `\n... (truncated, ${out.length} chars total)`
|
|
29
|
+
: out;
|
|
30
|
+
if (err && !stdout && !stderr) {
|
|
31
|
+
resolve(`ERROR: ${err.message}`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
resolve(truncated || "(no output)");
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
child.on("error", (err) => resolve(`ERROR: ${err.message}`));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,UAAU,GAAG,MAAM,CAAA;AACzB,MAAM,UAAU,GAAG,KAAK,CAAA;AAExB,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG;IACvB,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,MAAM;IACN,eAAe;IACf,WAAW;IACX,SAAS;IACT,eAAe;CAChB,CAAA;AAED,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,GAAW;IAEX,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,OAAO,CACpB,aAAa,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,2DAA2D,CAC7F,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;QAC9C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAElE,MAAM,KAAK,GAAG,QAAQ,CACpB,KAAK,EACL,CAAC,IAAI,EAAE,OAAO,CAAC,EACf,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,EACvD,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACpE,MAAM,SAAS,GACb,GAAG,CAAC,MAAM,GAAG,UAAU;gBACrB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,qBAAqB,GAAG,CAAC,MAAM,eAAe;gBAC3E,CAAC,CAAC,GAAG,CAAA;YAET,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,SAAS,IAAI,aAAa,CAAC,CAAA;YACrC,CAAC;QACH,CAAC,CACF,CAAA;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const MODELS: readonly [{
|
|
2
|
+
readonly id: "hira";
|
|
3
|
+
readonly display: "Hira";
|
|
4
|
+
readonly desc: "The motherland's voice";
|
|
5
|
+
readonly available: true;
|
|
6
|
+
}, {
|
|
7
|
+
readonly id: "tera";
|
|
8
|
+
readonly display: "Tera";
|
|
9
|
+
readonly desc: "Orchestrator — routes to best specialist";
|
|
10
|
+
readonly available: false;
|
|
11
|
+
}, {
|
|
12
|
+
readonly id: "akili";
|
|
13
|
+
readonly display: "Akili";
|
|
14
|
+
readonly desc: "Code intelligence";
|
|
15
|
+
readonly available: false;
|
|
16
|
+
}, {
|
|
17
|
+
readonly id: "ilimi";
|
|
18
|
+
readonly display: "Ilimi";
|
|
19
|
+
readonly desc: "Knowledge & research";
|
|
20
|
+
readonly available: false;
|
|
21
|
+
}];
|
|
22
|
+
export type ModelId = typeof MODELS[number]["id"];
|
|
23
|
+
export declare function printBanner(): void;
|
|
24
|
+
export declare function printCommandList(): void;
|
|
25
|
+
export declare function printWelcome(cwd: string, model: string, memoryLoaded: boolean): void;
|
|
26
|
+
export declare function printHelp(): void;
|
|
27
|
+
export declare function printModelList(current?: string): void;
|
|
28
|
+
export declare function printCost(estTokens: number, msgCount: number): void;
|
|
29
|
+
export declare function printStatus(apiKey: string | undefined, apiUrl: string | undefined, historyCount: number, cwd: string, model: string, estTokens: number): void;
|
|
30
|
+
export declare function printHistory(history: Array<{
|
|
31
|
+
role: string;
|
|
32
|
+
content: string;
|
|
33
|
+
}>): void;
|
|
34
|
+
export declare function startSpinner(text: string): void;
|
|
35
|
+
export declare function updateSpinner(text: string): void;
|
|
36
|
+
export declare function stopSpinner(success?: boolean, text?: string): void;
|
|
37
|
+
export declare function clearSpinner(): void;
|
|
38
|
+
export declare function printText(text: string): void;
|
|
39
|
+
export declare function printToolCall(name: string, args: Record<string, unknown>): void;
|
|
40
|
+
export declare function printToolResult(_name: string, output: string, ok: boolean): void;
|
|
41
|
+
export declare function printError(message: string): void;
|
|
42
|
+
export declare function printSuccess(message: string): void;
|
|
43
|
+
export declare function printDivider(): void;
|
|
44
|
+
export declare function printAssistantPrefix(): void;
|
|
45
|
+
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;EAKT,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAyEjD,wBAAgB,WAAW,SAiB1B;AAGD,wBAAgB,gBAAgB,SAmB/B;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,QAyB7E;AAGD,wBAAgB,SAAS,SAgCxB;AAGD,wBAAgB,cAAc,CAAC,OAAO,SAAS,QAmB9C;AAGD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAgB5D;AAGD,wBAAgB,WAAW,CACzB,MAAM,EAAQ,MAAM,GAAG,SAAS,EAChC,MAAM,EAAQ,MAAM,GAAG,SAAS,EAChC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAW,MAAM,EACpB,KAAK,EAAS,MAAM,EACpB,SAAS,EAAK,MAAM,QAwBrB;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,QAyB7E;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,QAMxC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,QAEzC;AAED,wBAAgB,WAAW,CAAC,OAAO,UAAO,EAAE,IAAI,CAAC,EAAE,MAAM,QAQxD;AAED,wBAAgB,YAAY,SAK3B;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,QAErC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAGxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,QAMzE;AAGD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,QAEzC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,QAE3C;AAGD,wBAAgB,YAAY,SAE3B;AAED,wBAAgB,oBAAoB,SAEnC"}
|
package/dist/ui.js
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
// ─── Palette ──────────────────────────────────────────────────────────────────
|
|
4
|
+
const GREEN = "#006B3F";
|
|
5
|
+
const GOLD = "#FCD116";
|
|
6
|
+
const RED = "#CE1126";
|
|
7
|
+
const VERSION = "0.1.1";
|
|
8
|
+
let spinner = null;
|
|
9
|
+
// ─── Models ───────────────────────────────────────────────────────────────────
|
|
10
|
+
export const MODELS = [
|
|
11
|
+
{ id: "hira", display: "Hira", desc: "The motherland's voice", available: true },
|
|
12
|
+
{ id: "tera", display: "Tera", desc: "Orchestrator — routes to best specialist", available: false },
|
|
13
|
+
{ id: "akili", display: "Akili", desc: "Code intelligence", available: false },
|
|
14
|
+
{ id: "ilimi", display: "Ilimi", desc: "Knowledge & research", available: false },
|
|
15
|
+
];
|
|
16
|
+
// ─── Box drawing ──────────────────────────────────────────────────────────────
|
|
17
|
+
function visLen(s) {
|
|
18
|
+
return s.replace(/\x1b\[[0-9;]*m/g, "").length;
|
|
19
|
+
}
|
|
20
|
+
const BOX_W = 64;
|
|
21
|
+
function boxTop(title) {
|
|
22
|
+
const fill = Math.max(0, BOX_W - 3 - title.length);
|
|
23
|
+
return (chalk.hex(GOLD).dim("╭─ ") +
|
|
24
|
+
chalk.white.bold(title) +
|
|
25
|
+
chalk.hex(GOLD).dim(" " + "─".repeat(fill) + "╮"));
|
|
26
|
+
}
|
|
27
|
+
function boxRow(row) {
|
|
28
|
+
const pad = Math.max(0, BOX_W - 2 - visLen(row));
|
|
29
|
+
return chalk.hex(GOLD).dim("│") + " " + row + " ".repeat(pad) + " " + chalk.hex(GOLD).dim("│");
|
|
30
|
+
}
|
|
31
|
+
function boxBottom() {
|
|
32
|
+
return chalk.hex(GOLD).dim("╰" + "─".repeat(BOX_W) + "╯");
|
|
33
|
+
}
|
|
34
|
+
// ─── Flag mosaic ──────────────────────────────────────────────────────────────
|
|
35
|
+
const FLAGS = [
|
|
36
|
+
["#CE1126", "#FCD116", "#078930"], // Ethiopia
|
|
37
|
+
["#006B3F", "#FFFFFF", "#006B3F"], // Nigeria
|
|
38
|
+
["#000000", "#CE1126", "#006600"], // Kenya
|
|
39
|
+
["#078930", "#FCD116", "#CE1126"], // Cameroon
|
|
40
|
+
["#DE3831", "#FFB612", "#007A4D"], // South Africa
|
|
41
|
+
["#CE1126", "#FFFFFF", "#000000"], // Egypt
|
|
42
|
+
["#3A75C4", "#000000", "#1EB53A"], // Tanzania
|
|
43
|
+
["#FCDC04", "#DE3108", "#000000"], // Uganda
|
|
44
|
+
["#00853F", "#FDEF42", "#E31B23"], // Senegal
|
|
45
|
+
["#007FFF", "#F7D618", "#CE1126"], // DRC
|
|
46
|
+
["#FAD201", "#19B3EE", "#20603D"], // Rwanda
|
|
47
|
+
["#CC0000", "#000000", "#FCDD00"], // Angola
|
|
48
|
+
];
|
|
49
|
+
function flagMosaicRows() {
|
|
50
|
+
let row1 = " ";
|
|
51
|
+
let row2 = " ";
|
|
52
|
+
for (const [top, mid, bot] of FLAGS) {
|
|
53
|
+
row1 += chalk.bgHex(mid).hex(top)("▀▀▀▀");
|
|
54
|
+
row2 += chalk.bgHex(bot).hex(mid)("▀▀▀▀");
|
|
55
|
+
}
|
|
56
|
+
return [row1, row2];
|
|
57
|
+
}
|
|
58
|
+
// ─── Kente divider ────────────────────────────────────────────────────────────
|
|
59
|
+
function kenteDivider(units = 28) {
|
|
60
|
+
let row = " ";
|
|
61
|
+
for (let i = 0; i < units; i++) {
|
|
62
|
+
switch (i % 4) {
|
|
63
|
+
case 0:
|
|
64
|
+
row += chalk.hex(GOLD)("◆");
|
|
65
|
+
break;
|
|
66
|
+
case 1:
|
|
67
|
+
row += chalk.dim("─");
|
|
68
|
+
break;
|
|
69
|
+
case 2:
|
|
70
|
+
row += chalk.hex(GREEN)("◇");
|
|
71
|
+
break;
|
|
72
|
+
case 3:
|
|
73
|
+
row += chalk.dim("─");
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return row;
|
|
78
|
+
}
|
|
79
|
+
// ─── Token formatting ─────────────────────────────────────────────────────────
|
|
80
|
+
function fmtK(n) {
|
|
81
|
+
return n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
|
|
82
|
+
}
|
|
83
|
+
// ─── Banner ───────────────────────────────────────────────────────────────────
|
|
84
|
+
export function printBanner() {
|
|
85
|
+
const [r1, r2] = flagMosaicRows();
|
|
86
|
+
console.log();
|
|
87
|
+
console.log(r1);
|
|
88
|
+
console.log(r2);
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(" " + chalk.hex(GOLD).bold("RANTERA") +
|
|
91
|
+
" " + chalk.dim("·") + " " +
|
|
92
|
+
chalk.hex(GREEN).bold("Wakanda") +
|
|
93
|
+
" " + chalk.dim(VERSION));
|
|
94
|
+
console.log(" " + chalk.dim("African Intelligence. Global Tools."));
|
|
95
|
+
console.log();
|
|
96
|
+
console.log(kenteDivider());
|
|
97
|
+
console.log();
|
|
98
|
+
}
|
|
99
|
+
// ─── Command list (shown with no-args rantera before login) ──────────────────
|
|
100
|
+
export function printCommandList() {
|
|
101
|
+
const cmd = (name) => " " + chalk.hex(GOLD)(name.padEnd(32));
|
|
102
|
+
const desc = (s) => chalk.dim(s);
|
|
103
|
+
console.log(" " + chalk.white.bold("Commands"));
|
|
104
|
+
console.log();
|
|
105
|
+
console.log(cmd("rantera [prompt]") + desc("Start the AI workspace (or run a one-shot task)"));
|
|
106
|
+
console.log(cmd("rantera init") + desc("Create RANTERA.md project memory file"));
|
|
107
|
+
console.log(cmd("rantera auth login") + desc("Log in to your Rantera account"));
|
|
108
|
+
console.log(cmd("rantera auth logout") + desc("Remove stored credentials"));
|
|
109
|
+
console.log(cmd("rantera auth status") + desc("Check authentication status"));
|
|
110
|
+
console.log(cmd("rantera config show") + desc("Show current configuration"));
|
|
111
|
+
console.log(cmd("rantera config set-key <k>") + desc("Set API key manually"));
|
|
112
|
+
console.log(cmd("rantera config set-url <u>") + desc("Override the API URL"));
|
|
113
|
+
console.log();
|
|
114
|
+
console.log(" " + chalk.dim("Flags: ") + chalk.dim.underline("-p, --print") + chalk.dim(" (non-interactive output) ") + chalk.dim.underline("-d, --dir <path>"));
|
|
115
|
+
console.log();
|
|
116
|
+
console.log(" " + chalk.dim("Run ") + chalk.dim.underline("rantera <command> --help") + chalk.dim(" for details."));
|
|
117
|
+
console.log();
|
|
118
|
+
}
|
|
119
|
+
// ─── Wakanda session welcome ──────────────────────────────────────────────────
|
|
120
|
+
export function printWelcome(cwd, model, memoryLoaded) {
|
|
121
|
+
printBanner();
|
|
122
|
+
const parts = cwd.replace(/\\/g, "/").split("/").filter(Boolean);
|
|
123
|
+
const shortDir = parts.length >= 2 ? parts.slice(-2).join("/") : cwd;
|
|
124
|
+
const m = MODELS.find(x => x.id === model) ?? MODELS[0];
|
|
125
|
+
const rows = [
|
|
126
|
+
chalk.dim("Model ") + chalk.white(m.display) + chalk.dim(" (Rantera AI)"),
|
|
127
|
+
chalk.dim("Dir ") + chalk.white(shortDir),
|
|
128
|
+
...(memoryLoaded ? [chalk.dim("Memory ") + chalk.hex(GREEN)("✓ RANTERA.md")] : []),
|
|
129
|
+
"",
|
|
130
|
+
chalk.dim("Task, ") +
|
|
131
|
+
chalk.hex(GOLD)("/help") +
|
|
132
|
+
chalk.dim(" for commands, ") +
|
|
133
|
+
chalk.hex(GOLD)("/model") +
|
|
134
|
+
chalk.dim(" to switch."),
|
|
135
|
+
];
|
|
136
|
+
console.log(" " + boxTop("Wakanda"));
|
|
137
|
+
for (const r of rows) {
|
|
138
|
+
console.log(" " + boxRow(r));
|
|
139
|
+
}
|
|
140
|
+
console.log(" " + boxBottom());
|
|
141
|
+
console.log();
|
|
142
|
+
}
|
|
143
|
+
// ─── /help ────────────────────────────────────────────────────────────────────
|
|
144
|
+
export function printHelp() {
|
|
145
|
+
const slot = (name) => " " + chalk.hex(GOLD)(name.padEnd(20));
|
|
146
|
+
const tip = (s) => " " + chalk.hex(GREEN)("◆") + " " + chalk.dim(s);
|
|
147
|
+
const sep = () => console.log(" " + kenteDivider(26));
|
|
148
|
+
console.log();
|
|
149
|
+
console.log(" " + chalk.white.bold("Slash Commands"));
|
|
150
|
+
sep();
|
|
151
|
+
console.log(slot("/help") + chalk.dim("Show this message"));
|
|
152
|
+
console.log(slot("/model [name]") + chalk.dim("List models or switch (e.g. /model hira)"));
|
|
153
|
+
console.log(slot("/compact") + chalk.dim("Trim history — keep last 3 exchanges"));
|
|
154
|
+
console.log(slot("/cost") + chalk.dim("Show estimated token usage for this session"));
|
|
155
|
+
console.log(slot("/clear") + chalk.dim("Erase all conversation history"));
|
|
156
|
+
console.log(slot("/history") + chalk.dim("Show recent messages"));
|
|
157
|
+
console.log(slot("/status") + chalk.dim("Auth, model, context and config info"));
|
|
158
|
+
console.log(slot("/login") + chalk.dim("Log in (or switch to a different account)"));
|
|
159
|
+
console.log(slot("/logout") + chalk.dim("Log out of current account"));
|
|
160
|
+
console.log(slot("/exit") + chalk.dim("Exit Wakanda"));
|
|
161
|
+
console.log();
|
|
162
|
+
console.log(" " + chalk.white.bold("Input"));
|
|
163
|
+
sep();
|
|
164
|
+
console.log(tip("End a line with \\ to continue on the next line (multi-line)"));
|
|
165
|
+
console.log(tip("Press ↑ / ↓ to scroll through your input history"));
|
|
166
|
+
console.log(tip("Ctrl+C cancels a running task"));
|
|
167
|
+
console.log();
|
|
168
|
+
console.log(" " + chalk.white.bold("Tips"));
|
|
169
|
+
sep();
|
|
170
|
+
console.log(tip("Just type your task — Tera understands natural language"));
|
|
171
|
+
console.log(tip("Reference files directly: \"fix the bug in auth.ts\""));
|
|
172
|
+
console.log(tip("Give feedback: \"try again, make it simpler\""));
|
|
173
|
+
console.log(tip("Add RANTERA.md in your project root for persistent context"));
|
|
174
|
+
console.log();
|
|
175
|
+
}
|
|
176
|
+
// ─── /model ───────────────────────────────────────────────────────────────────
|
|
177
|
+
export function printModelList(current = "hira") {
|
|
178
|
+
const slot = (name) => " " + chalk.hex(GOLD)(name.padEnd(10));
|
|
179
|
+
console.log();
|
|
180
|
+
console.log(" " + chalk.white.bold("Models"));
|
|
181
|
+
console.log(" " + kenteDivider(26));
|
|
182
|
+
for (const m of MODELS) {
|
|
183
|
+
const mark = m.id === current
|
|
184
|
+
? chalk.hex(GREEN)("◆ ")
|
|
185
|
+
: " ";
|
|
186
|
+
const status = m.available
|
|
187
|
+
? chalk.dim(m.desc)
|
|
188
|
+
: chalk.dim(m.desc) + " " + chalk.hex("#334155")("[coming soon]");
|
|
189
|
+
console.log(mark + slot(m.display) + status);
|
|
190
|
+
}
|
|
191
|
+
console.log();
|
|
192
|
+
console.log(chalk.dim(" Current: ") + chalk.white(current));
|
|
193
|
+
console.log(chalk.dim(" Switch: ") + chalk.hex(GOLD)("/model <name>") + chalk.dim(" e.g. /model hira"));
|
|
194
|
+
console.log();
|
|
195
|
+
}
|
|
196
|
+
// ─── /cost ────────────────────────────────────────────────────────────────────
|
|
197
|
+
export function printCost(estTokens, msgCount) {
|
|
198
|
+
const LIMIT = 200_000;
|
|
199
|
+
const pct = Math.min(100, Math.round((estTokens / LIMIT) * 1000) / 10);
|
|
200
|
+
const label = (s) => " " + chalk.dim(s.padEnd(12));
|
|
201
|
+
console.log();
|
|
202
|
+
console.log(" " + chalk.white.bold("Token Usage ") + chalk.dim("(estimated)"));
|
|
203
|
+
console.log(" " + kenteDivider(26));
|
|
204
|
+
console.log(label("Messages") + chalk.white(String(msgCount)));
|
|
205
|
+
console.log(label("Tokens") + chalk.white(`~${fmtK(estTokens)}`));
|
|
206
|
+
console.log(label("Context") + chalk.white(`${pct}%`) + chalk.dim(` of 200k (~${fmtK(estTokens)} / 200k tokens)`));
|
|
207
|
+
if (pct > 80) {
|
|
208
|
+
console.log();
|
|
209
|
+
console.log(chalk.hex("#FCD116")(" ⚠ Context is over 80%. Use /compact to trim history."));
|
|
210
|
+
}
|
|
211
|
+
console.log();
|
|
212
|
+
}
|
|
213
|
+
// ─── /status ──────────────────────────────────────────────────────────────────
|
|
214
|
+
export function printStatus(apiKey, apiUrl, historyCount, cwd, model, estTokens) {
|
|
215
|
+
const LIMIT = 200_000;
|
|
216
|
+
const pct = Math.min(100, Math.round((estTokens / LIMIT) * 1000) / 10);
|
|
217
|
+
const label = (s) => " " + chalk.dim(s.padEnd(10));
|
|
218
|
+
const parts = cwd.replace(/\\/g, "/").split("/").filter(Boolean);
|
|
219
|
+
const shortDir = parts.length >= 2 ? parts.slice(-2).join("/") : cwd;
|
|
220
|
+
const m = MODELS.find(x => x.id === model) ?? MODELS[0];
|
|
221
|
+
console.log();
|
|
222
|
+
console.log(" " + chalk.white.bold("Status"));
|
|
223
|
+
console.log(" " + kenteDivider(26));
|
|
224
|
+
console.log(label("Auth") +
|
|
225
|
+
(apiKey
|
|
226
|
+
? chalk.hex(GREEN).bold("✓ Logged in") + chalk.dim(` (${apiKey.slice(0, 16)}…)`)
|
|
227
|
+
: chalk.hex(RED).bold("✗ Not logged in") + chalk.dim(" Run `rantera auth login`")));
|
|
228
|
+
console.log(label("API URL") + chalk.white(apiUrl ?? "https://rantera.ai"));
|
|
229
|
+
console.log(label("Model") + chalk.white(m.display) + chalk.dim(` ${m.desc}`));
|
|
230
|
+
console.log(label("Dir") + chalk.white(shortDir));
|
|
231
|
+
console.log(label("History") + chalk.dim(`${historyCount} message${historyCount !== 1 ? "s" : ""}`));
|
|
232
|
+
console.log(label("Context") + chalk.white(`~${fmtK(estTokens)} tokens`) + chalk.dim(` (${pct}% of 200k)`));
|
|
233
|
+
console.log();
|
|
234
|
+
}
|
|
235
|
+
// ─── /history ─────────────────────────────────────────────────────────────────
|
|
236
|
+
export function printHistory(history) {
|
|
237
|
+
if (history.length === 0) {
|
|
238
|
+
console.log();
|
|
239
|
+
console.log(chalk.dim(" No conversation history yet."));
|
|
240
|
+
console.log();
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
console.log();
|
|
244
|
+
console.log(" " + chalk.white.bold("History") + " " +
|
|
245
|
+
chalk.dim(`${history.length} message${history.length !== 1 ? "s" : ""}`));
|
|
246
|
+
console.log(" " + kenteDivider(26));
|
|
247
|
+
for (const msg of history) {
|
|
248
|
+
const isUser = msg.role === "user";
|
|
249
|
+
const label = isUser
|
|
250
|
+
? " " + chalk.hex(GOLD).bold("you ")
|
|
251
|
+
: " " + chalk.hex(GREEN).bold("tera");
|
|
252
|
+
const text = msg.content?.replace(/\n/g, " ") ?? "";
|
|
253
|
+
const preview = text.length > 80 ? text.slice(0, 80) + chalk.dim("…") : text;
|
|
254
|
+
console.log(label + " " + chalk.dim(preview));
|
|
255
|
+
}
|
|
256
|
+
console.log();
|
|
257
|
+
}
|
|
258
|
+
// ─── Spinner ──────────────────────────────────────────────────────────────────
|
|
259
|
+
export function startSpinner(text) {
|
|
260
|
+
spinner = ora({
|
|
261
|
+
text: chalk.hex(GOLD)(text),
|
|
262
|
+
color: "yellow",
|
|
263
|
+
spinner: "dots",
|
|
264
|
+
}).start();
|
|
265
|
+
}
|
|
266
|
+
export function updateSpinner(text) {
|
|
267
|
+
if (spinner)
|
|
268
|
+
spinner.text = chalk.hex(GOLD)(text);
|
|
269
|
+
}
|
|
270
|
+
export function stopSpinner(success = true, text) {
|
|
271
|
+
if (!spinner)
|
|
272
|
+
return;
|
|
273
|
+
if (success) {
|
|
274
|
+
spinner.succeed(text ? chalk.hex(GREEN)(text) : undefined);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
spinner.fail(text ? chalk.dim(text) : undefined);
|
|
278
|
+
}
|
|
279
|
+
spinner = null;
|
|
280
|
+
}
|
|
281
|
+
export function clearSpinner() {
|
|
282
|
+
if (spinner) {
|
|
283
|
+
spinner.stop();
|
|
284
|
+
spinner = null;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// ─── Streaming output ─────────────────────────────────────────────────────────
|
|
288
|
+
export function printText(text) {
|
|
289
|
+
process.stdout.write(text);
|
|
290
|
+
}
|
|
291
|
+
export function printToolCall(name, args) {
|
|
292
|
+
const argsStr = formatArgs(args);
|
|
293
|
+
console.log("\n " + chalk.hex(GOLD).bold(`◆ ${name}`) + " " + chalk.dim(argsStr));
|
|
294
|
+
}
|
|
295
|
+
export function printToolResult(_name, output, ok) {
|
|
296
|
+
const icon = ok ? chalk.hex(GREEN)("✓") : chalk.hex(RED)("✗");
|
|
297
|
+
const preview = output.length > 240
|
|
298
|
+
? output.slice(0, 240).replace(/\n/g, " ") + chalk.dim("…")
|
|
299
|
+
: output.replace(/\n/g, " ");
|
|
300
|
+
console.log(" " + icon + " " + chalk.dim(preview) + "\n");
|
|
301
|
+
}
|
|
302
|
+
// ─── Alerts ───────────────────────────────────────────────────────────────────
|
|
303
|
+
export function printError(message) {
|
|
304
|
+
console.error("\n " + chalk.hex(RED).bold("✗") + " " + chalk.white.bold("Error:") + " " + message);
|
|
305
|
+
}
|
|
306
|
+
export function printSuccess(message) {
|
|
307
|
+
console.log(" " + chalk.hex(GREEN).bold("✓") + " " + message);
|
|
308
|
+
}
|
|
309
|
+
// ─── Structural ───────────────────────────────────────────────────────────────
|
|
310
|
+
export function printDivider() {
|
|
311
|
+
console.log(kenteDivider(28));
|
|
312
|
+
}
|
|
313
|
+
export function printAssistantPrefix() {
|
|
314
|
+
process.stdout.write("\n " + chalk.hex(GREEN).bold("Tera ❯") + " ");
|
|
315
|
+
}
|
|
316
|
+
// ─── Internal helpers ─────────────────────────────────────────────────────────
|
|
317
|
+
function formatArgs(args) {
|
|
318
|
+
const parts = [];
|
|
319
|
+
for (const [k, v] of Object.entries(args)) {
|
|
320
|
+
const val = typeof v === "string" && v.length > 60 ? v.slice(0, 60) + "…" : String(v);
|
|
321
|
+
parts.push(`${k}=${val}`);
|
|
322
|
+
}
|
|
323
|
+
return parts.join(" ");
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAiB,MAAM,KAAK,CAAA;AAEnC,iFAAiF;AACjF,MAAM,KAAK,GAAK,SAAS,CAAA;AACzB,MAAM,IAAI,GAAM,SAAS,CAAA;AACzB,MAAM,GAAG,GAAO,SAAS,CAAA;AACzB,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,IAAI,OAAO,GAAe,IAAI,CAAA;AAE9B,iFAAiF;AACjF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,EAAE,MAAM,EAAG,OAAO,EAAE,MAAM,EAAG,IAAI,EAAE,wBAAwB,EAAiB,SAAS,EAAE,IAAI,EAAG;IAClG,EAAE,EAAE,EAAE,MAAM,EAAG,OAAO,EAAE,MAAM,EAAG,IAAI,EAAE,0CAA0C,EAAE,SAAS,EAAE,KAAK,EAAE;IACrG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAsB,SAAS,EAAE,KAAK,EAAE;IAClG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAmB,SAAS,EAAE,KAAK,EAAE;CAC1F,CAAA;AAIV,iFAAiF;AACjF,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAA;AAChD,CAAC;AAED,MAAM,KAAK,GAAG,EAAE,CAAA;AAEhB,SAAS,MAAM,CAAC,KAAa;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAClD,OAAO,CACL,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAClD,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;AAC3D,CAAC;AAED,iFAAiF;AACjF,MAAM,KAAK,GAA+B;IACxC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,WAAW;IAC/C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,UAAU;IAC9C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,QAAQ;IAC5C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,WAAW;IAC/C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,eAAe;IACnD,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,QAAQ;IAC5C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,WAAW;IAC/C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,SAAS;IAC7C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,UAAU;IAC9C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,MAAM;IAC1C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,SAAS;IAC7C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAG,SAAS;CAC9C,CAAA;AAED,SAAS,cAAc;IACrB,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,iFAAiF;AACjF,SAAS,YAAY,CAAC,KAAK,GAAG,EAAE;IAC9B,IAAI,GAAG,GAAG,IAAI,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC;gBAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAK;YAC1C,KAAK,CAAC;gBAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAK;YACpC,KAAK,CAAC;gBAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAK;YAC3C,KAAK,CAAC;gBAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAK;QACtC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,iFAAiF;AACjF,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,cAAc,EAAE,CAAA;IAEjC,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CACT,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;QAC5B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAC1B,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;IACpE,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAI,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAE3C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAY,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAA;IACvG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAgB,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAA;IAC7F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAU,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAA;IACtF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAS,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAA;IACjF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAS,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAA;IACnF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAS,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAA;IAClF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC7E,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAClK,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IACpH,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,YAAqB;IAC5E,WAAW,EAAE,CAAA;IAEb,MAAM,KAAK,GAAM,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACpE,MAAM,CAAC,GAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IAE9D,MAAM,IAAI,GAAa;QACrB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,EAAE;QACF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;KACzB,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAA;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,GAAG,GAAI,CAAC,CAAS,EAAK,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACjF,MAAM,GAAG,GAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAEvD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACtD,GAAG,EAAE,CAAA;IACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAW,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAA;IAC3F,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAQ,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAA;IACtF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAW,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAA;IAC7F,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAU,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;IAChF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAQ,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACtE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAS,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAA;IACtF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAW,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAA;IAC5F,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAU,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAA;IAC7E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAY,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7C,GAAG,EAAE,CAAA;IACL,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAA;IAClF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAA;IACpE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAA;IACjD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,GAAG,EAAE,CAAA;IACL,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAA;IAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAA;IACzE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAA;IAC9E,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,MAAM;IAC7C,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAEtE,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,OAAO;YAC3B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,IAAI,CAAA;QACR,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS;YACxB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC1G,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,QAAgB;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAA;IACrB,MAAM,GAAG,GAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;IAChF,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAK,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAI,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACrH,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAA;IAC9F,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CACzB,MAAgC,EAChC,MAAgC,EAChC,YAAoB,EACpB,GAAoB,EACpB,KAAoB,EACpB,SAAoB;IAEpB,MAAM,KAAK,GAAM,OAAO,CAAA;IACxB,MAAM,GAAG,GAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC3E,MAAM,KAAK,GAAM,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAM,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACpE,MAAM,CAAC,GAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IAE9D,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC;QACb,CAAC,MAAM;YACL,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;YACjF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CACtF,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAA;IAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAQ,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAI,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACrG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAA;IAC7G,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,OAAiD;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CACT,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI;QACzC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACzE,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAEpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAA;QAClC,MAAM,KAAK,GAAI,MAAM;YACnB,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,IAAI,GAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,GAAG,GAAG,CAAC;QACZ,IAAI,EAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAI,QAAQ;QACjB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC,KAAK,EAAE,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,OAAO;QAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAO,GAAG,IAAI,EAAE,IAAa;IACvD,IAAI,CAAC,OAAO;QAAE,OAAM;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,GAAG,IAAI,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAA6B;IACvE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,MAAc,EAAE,EAAW;IACxE,MAAM,IAAI,GAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG;QACjC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC3D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;AAC/D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,CAAA;AACvG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,CAAA;AACjE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,iFAAiF;AACjF,SAAS,UAAU,CAAC,IAA6B;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GACP,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rantera",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Rantera CLI — African-first AI platform for developers",
|
|
5
|
+
"bin": {
|
|
6
|
+
"rantera": "dist/index.js"
|
|
7
|
+
},
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"chalk": "^5.3.0",
|
|
17
|
+
"commander": "^12.1.0",
|
|
18
|
+
"ora": "^8.1.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/node": "^22.0.0",
|
|
22
|
+
"typescript": "^5.5.0"
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=18.0.0"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"ai",
|
|
29
|
+
"developer",
|
|
30
|
+
"workspace",
|
|
31
|
+
"rantera",
|
|
32
|
+
"africa",
|
|
33
|
+
"cli",
|
|
34
|
+
"llm"
|
|
35
|
+
],
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"homepage": "https://rantera.ai",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist/"
|
|
40
|
+
]
|
|
41
|
+
}
|
package/README.md
DELETED