blun-king-cli 7.1.0 → 7.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.
Files changed (2) hide show
  1. package/lib/chat.js +50 -53
  2. package/package.json +1 -1
package/lib/chat.js CHANGED
@@ -89,64 +89,61 @@ function startChat() {
89
89
  });
90
90
 
91
91
  function showPrompt() {
92
- ui.renderInputPanel(settings);
93
- rl.setPrompt(ui.renderPrompt());
92
+ rl.setPrompt(chalk.bold.green("> "));
94
93
  rl.prompt();
95
94
  }
96
95
 
97
- // ── Interactive Settings Panel ──────────────────────
96
+ // ── Settings via inquirer (Windows-compatible) ──────
98
97
  function openSettingsPanel() {
99
- var selection = 0;
100
-
101
- function render() {
102
- // Clear and redraw
103
- readline.cursorTo(process.stdout, 0);
104
- readline.clearScreenDown(process.stdout);
105
- var lines = ui.buildSettingsPanel(settings, selection);
106
- console.log(lines.join("\n"));
107
- }
108
-
109
- function cleanup() {
110
- process.stdin.removeListener("keypress", onKeypress);
111
- if (process.stdin.isTTY && process.stdin.setRawMode) process.stdin.setRawMode(false);
112
- process.stdin.resume();
113
- console.log();
114
- showPrompt();
115
- }
116
-
117
- function onKeypress(_, key) {
118
- key = key || {};
119
- if (key.name === "up") {
120
- selection = (selection + ui.SETTINGS_FIELDS.length - 1) % ui.SETTINGS_FIELDS.length;
121
- render();
122
- } else if (key.name === "down") {
123
- selection = (selection + 1) % ui.SETTINGS_FIELDS.length;
124
- render();
125
- } else if (key.name === "right") {
126
- var field = ui.SETTINGS_FIELDS[selection];
127
- settings = ui.cycleSetting(settings, field.key, 1);
128
- if (field.key === "theme") ui.setTheme(settings.theme);
129
- auth.saveSettings(settings);
130
- render();
131
- } else if (key.name === "left") {
132
- var field = ui.SETTINGS_FIELDS[selection];
133
- settings = ui.cycleSetting(settings, field.key, -1);
98
+ var inquirer = require("inquirer");
99
+ var t = ui.getTheme();
100
+
101
+ // Show current settings
102
+ console.log();
103
+ console.log(t.header(" Current Settings"));
104
+ console.log(t.muted(" " + "\u2500".repeat(40)));
105
+ ui.SETTINGS_FIELDS.forEach(function (f) {
106
+ console.log(" " + chalk.white(f.label + ":") + " ".repeat(Math.max(1, 14 - f.label.length)) + ui.formatSettingValue(f, settings[f.key]));
107
+ });
108
+ console.log();
109
+
110
+ inquirer.prompt([{
111
+ type: "list",
112
+ name: "field",
113
+ message: "Change setting",
114
+ choices: ui.SETTINGS_FIELDS.map(function (f) {
115
+ return { name: f.label + " — " + ui.formatSettingValue(f, settings[f.key]), value: f.key };
116
+ }).concat([{ name: chalk.dim("Back"), value: "back" }]),
117
+ pageSize: 12,
118
+ }]).then(function (ans) {
119
+ if (ans.field === "back") {
120
+ showPrompt();
121
+ return;
122
+ }
123
+ var field = null;
124
+ for (var i = 0; i < ui.SETTINGS_FIELDS.length; i++) {
125
+ if (ui.SETTINGS_FIELDS[i].key === ans.field) { field = ui.SETTINGS_FIELDS[i]; break; }
126
+ }
127
+ if (!field) { showPrompt(); return; }
128
+
129
+ return inquirer.prompt([{
130
+ type: "list",
131
+ name: "value",
132
+ message: field.label + " (" + (field.help || "") + ")",
133
+ choices: field.values.map(function (v) {
134
+ var isCurrent = settings[field.key] === v;
135
+ var label = String(v);
136
+ if (typeof v === "boolean") label = v ? "On" : "Off";
137
+ return { name: label + (isCurrent ? chalk.green(" (current)") : ""), value: v };
138
+ }),
139
+ }]).then(function (ans2) {
140
+ settings[field.key] = ans2.value;
134
141
  if (field.key === "theme") ui.setTheme(settings.theme);
135
142
  auth.saveSettings(settings);
136
- render();
137
- } else if (key.name === "return" || key.name === "escape") {
138
- cleanup();
139
- } else if (key.ctrl && key.name === "c") {
140
- cleanup();
141
- }
142
- }
143
-
144
- // Pause readline, take raw input
145
- rl.pause();
146
- readline.emitKeypressEvents(process.stdin);
147
- if (process.stdin.isTTY && process.stdin.setRawMode) process.stdin.setRawMode(true);
148
- process.stdin.on("keypress", onKeypress);
149
- render();
143
+ ui.renderResponse(field.label + ": " + ans2.value, "system");
144
+ showPrompt();
145
+ });
146
+ });
150
147
  }
151
148
 
152
149
  console.log();
@@ -161,7 +158,7 @@ function startChat() {
161
158
  return;
162
159
  }
163
160
 
164
- ui.renderInputPanelClose(settings);
161
+ console.log();
165
162
 
166
163
  // ── Commands ────────────────────────────────
167
164
  if (input === "/exit" || input === "/quit") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "7.1.0",
3
+ "version": "7.1.1",
4
4
  "description": "BLUN AI Assistant - Command Line Interface",
5
5
  "bin": {
6
6
  "blun": "./bin/blun.js"