blun-king-cli 5.3.2 → 5.3.4

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/blun-cli.js CHANGED
@@ -1778,6 +1778,7 @@ async function cmdBrowser(args) {
1778
1778
  var parts = (args || "").split(/\s+/);
1779
1779
  var action = parts[0] || "help";
1780
1780
 
1781
+ try {
1781
1782
  if (action === "open" && parts[1]) {
1782
1783
  printInfo("Opening " + parts[1] + "...");
1783
1784
  var snap = await browser.open(parts[1]);
@@ -1813,6 +1814,7 @@ async function cmdBrowser(args) {
1813
1814
  console.log(" /browser close Close browser");
1814
1815
  console.log("");
1815
1816
  }
1817
+ } catch(browserErr) { printError("Browser error: " + browserErr.message); }
1816
1818
  }
1817
1819
 
1818
1820
  // ══════════════════════════════════════════════════
@@ -3062,7 +3064,41 @@ async function main() {
3062
3064
  await handleCommand(input);
3063
3065
  runHook("post", input.split(/\s+/)[0].slice(1));
3064
3066
  } else {
3067
+ // Browser intent — natural language with URL → local Playwright
3068
+ var urlMatch = input.match(/(https?:\/\/\S+)/i) || input.match(/\b((?:www\.)?[a-zA-Z0-9-]+\.[a-z]{2,}(?:\/\S*)?)\b/i);
3069
+ var browserWords = /\b(öffne|open|schau|zeig|geh auf|gehen|navigate|browse|screenshot|bildschirmfoto|aufrufen|besuch|check|prüf|analysier)\b/i;
3070
+ if (urlMatch && browserWords.test(input)) {
3071
+ var browserUrl = urlMatch[1];
3072
+ try {
3073
+ var bc = require(path.join(__dirname, "browser-controller"));
3074
+ if (/screenshot|bildschirmfoto/i.test(input)) {
3075
+ printInfo("Screenshot: " + browserUrl);
3076
+ var snap = await bc.open(browserUrl);
3077
+ var shotFile = path.join(config.workdir, "screenshot-" + Date.now() + ".png");
3078
+ await bc.screenshot(shotFile);
3079
+ printSuccess("Screenshot gespeichert: " + shotFile);
3080
+ console.log(" " + C.gray + "Title: " + C.reset + snap.title);
3081
+ } else {
3082
+ printInfo("Öffne " + browserUrl + "...");
3083
+ var snap = await bc.open(browserUrl);
3084
+ printSuccess(snap.title);
3085
+ console.log(" " + C.gray + "URL: " + C.reset + snap.url);
3086
+ if (snap.text) {
3087
+ console.log(C.dim + " " + BOX.h.repeat(40) + C.reset);
3088
+ var preview = snap.text.slice(0, 500).replace(/\n{3,}/g, "\n\n");
3089
+ console.log(" " + preview);
3090
+ }
3091
+ console.log("");
3092
+ // Send page context to chat so BLUN King can discuss it
3093
+ await sendChat(input + "\n\n[Browser-Kontext: " + snap.title + " — " + snap.text.slice(0, 1000) + "]");
3094
+ }
3095
+ } catch(bcErr) {
3096
+ // Playwright not available, send to chat normally
3097
+ await sendChat(input);
3098
+ }
3099
+ }
3065
3100
  // Intent detection — natural language → command
3101
+ else {
3066
3102
  var detected = detectIntent(input);
3067
3103
  if (detected) {
3068
3104
  printInfo("→ " + detected);
@@ -3084,6 +3120,7 @@ async function main() {
3084
3120
  } else {
3085
3121
  await sendChat(input);
3086
3122
  }
3123
+ }
3087
3124
  }
3088
3125
 
3089
3126
  inputBuffer = "";
@@ -15,7 +15,9 @@ async function ensurePage() {
15
15
 
16
16
  async function open(url) {
17
17
  const page = await ensurePage();
18
- await page.goto(String(url), { waitUntil: "domcontentloaded", timeout: 30000 });
18
+ var cleanUrl = String(url).replace(/^<|>$/g, "").trim();
19
+ if (!/^https?:\/\//i.test(cleanUrl)) cleanUrl = "https://" + cleanUrl;
20
+ await page.goto(cleanUrl, { waitUntil: "domcontentloaded", timeout: 30000 });
19
21
  return snapshot();
20
22
  }
21
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "5.3.2",
3
+ "version": "5.3.4",
4
4
  "description": "BLUN King CLI — Your local AI assistant powered by Gemma4",
5
5
  "type": "commonjs",
6
6
  "bin": {