blun-king-cli 9.1.574 → 9.1.576

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/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## 9.1.576 - 2026-09-07
2
+
3
+ - Preserve standalone C++ and C# as distinct terms in local research recall,
4
+ including case-insensitive queries and ordinary surrounding punctuation.
5
+ - Keep existing saved passages, hashes, source guards, Unicode normalization,
6
+ collection boundaries and output limits unchanged. No reindexing is required.
7
+ - Add a frozen 20-case technical replay and explicit token-boundary regressions.
8
+ This is a local recall correction, not a live WebSearch quality or capacity claim.
9
+ - Retain all public575 crawler, search, Telegram, resume and updater changes.
10
+
11
+ # 9.1.575 - 2026-09-07
12
+
13
+ - Cumulative release retaining all public 9.1.574 changes.
14
+ - The bundled public-web crawler rejects responses carrying `cf-mitigated: challenge` before reading content, following redirects or treating a missing robots file as permission to continue. Case-insensitive header names, normalized values and repeated headers are checked; the response status is retained in the failure report.
15
+ - Unmarked missing robots files and ordinary documentation continue through the existing path. Completed pages remain available when a later page is rejected, with the failure recorded as partial output.
16
+ - This is a response-marker safeguard, not general challenge detection or a CAPTCHA bypass. It does not change search providers, authentication, update locking or the CLI core.
17
+
18
+
1
19
  # 9.1.574 - 2026-09-07
2
20
 
3
21
  - Cumulative release retaining every public 9.1.573 payload change.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.574",
3
+ "version": "9.1.576",
4
4
  "description": "BLUN CLI - your own AI agent with a Telegram channel. Get it done. With BLUN.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -151,7 +151,9 @@ function save({ home, project, report }) {
151
151
  }
152
152
  }
153
153
  }
154
- const terms = text => [...new Set(text.normalize('NFC').toLocaleLowerCase('en').match(/[\p{L}\p{N}]{2,}/gu) || [])];
154
+ // Preserve standalone language names whose punctuation is semantically significant.
155
+ const terms = text => [...new Set(text.normalize('NFC').toLocaleLowerCase('en')
156
+ .match(/(?<![\p{L}\p{N}\p{M}_])c(?:\+\+|#)(?![\p{L}\p{N}\p{M}_+#])|[\p{L}\p{N}]{2,}/gu) || [])];
155
157
  function query({ home, project, query: question, limit = 5, maxChars = 8000, offset = 0, expectedCollectionSha256 }) {
156
158
  const output = { schema: 'blun.research-recall/v1', availability: 'unavailable', matches: [], diagnostics: [],
157
159
  sourceVerified: false, retrieval: 'lexical-artifact-search', bytesRead: 0, limited: false,
@@ -192,6 +192,9 @@ class PublicStrategy:
192
192
  await asyncio.sleep(max(0, max(0.4, delay) - (time.monotonic() - self.last_fetch)))
193
193
  self.last_fetch = time.monotonic()
194
194
  async with self.session.get(current, allow_redirects=False) as response:
195
+ if any(value.strip().lower() == 'challenge'
196
+ for value in response.headers.getall('cf-mitigated', ())):
197
+ raise CrawlError('challenge-page-not-crawled', status=response.status)
195
198
  if response.status in (301, 302, 303, 307, 308):
196
199
  location = response.headers.get('Location')
197
200
  if not location: raise CrawlError('redirect-without-location')