bluera-knowledge 0.27.2 → 0.27.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/CHANGELOG.md +10 -0
- package/README.md +13 -194
- package/dist/{chunk-S3DJUNUG.js → chunk-BYLIDCWD.js} +2 -2
- package/dist/{chunk-LBE2PTSB.js → chunk-UXT3BCAH.js} +2 -2
- package/dist/{chunk-GB5WKUBX.js → chunk-WP2GERAJ.js} +97 -28
- package/dist/chunk-WP2GERAJ.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/mcp/server.d.ts +8 -4
- package/dist/mcp/server.js +2 -2
- package/dist/workers/background-worker-cli.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-GB5WKUBX.js.map +0 -1
- /package/dist/{chunk-S3DJUNUG.js.map → chunk-BYLIDCWD.js.map} +0 -0
- /package/dist/{chunk-LBE2PTSB.js.map → chunk-UXT3BCAH.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [0.27.4](https://github.com/blueraai/bluera-knowledge/compare/v0.27.3...v0.27.4) (2026-02-10)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **gitignore:** add semantic equivalence, dedup, and managed section markers ([a07d6fe](https://github.com/blueraai/bluera-knowledge/commit/a07d6fe2bdf5214f8deee86b1c888eb318356809))
|
|
11
|
+
* **plugin:** remove redundant hooks manifest entry ([6fa1e6f](https://github.com/blueraai/bluera-knowledge/commit/6fa1e6f1401464db2d2bd8d2929524b73bdc6a4b))
|
|
12
|
+
|
|
13
|
+
## [0.27.3](https://github.com/blueraai/bluera-knowledge/compare/v0.27.2...v0.27.3) (2026-02-07)
|
|
14
|
+
|
|
5
15
|
## [0.27.2](https://github.com/blueraai/bluera-knowledge/compare/v0.27.1...v0.27.2) (2026-02-05)
|
|
6
16
|
|
|
7
17
|
|
package/README.md
CHANGED
|
@@ -452,200 +452,18 @@ Combine canonical library code with project-specific patterns:
|
|
|
452
452
|
|
|
453
453
|
## 🔧 Troubleshooting
|
|
454
454
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
-
|
|
459
|
-
-
|
|
460
|
-
-
|
|
461
|
-
-
|
|
462
|
-
-
|
|
463
|
-
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
<details>
|
|
468
|
-
<summary><b>❌ Command not found or not recognized</b></summary>
|
|
469
|
-
|
|
470
|
-
Ensure the plugin is installed and enabled:
|
|
471
|
-
|
|
472
|
-
```bash
|
|
473
|
-
/plugin list
|
|
474
|
-
/plugin enable bluera-knowledge
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
If the plugin isn't listed, install it:
|
|
478
|
-
|
|
479
|
-
```bash
|
|
480
|
-
/plugin marketplace add blueraai/bluera-marketplace
|
|
481
|
-
/plugin install bluera-knowledge@bluera
|
|
482
|
-
```
|
|
483
|
-
</details>
|
|
484
|
-
|
|
485
|
-
<details>
|
|
486
|
-
<summary><b>🔌 MCP server shows as "failed" in /plugin</b></summary>
|
|
487
|
-
|
|
488
|
-
If the MCP server shows as failed after installation:
|
|
489
|
-
|
|
490
|
-
1. **Run `/bluera-knowledge:doctor`** - This diagnoses the most common issues
|
|
491
|
-
2. **Restart Claude Code** - MCP servers require a restart to initialize
|
|
492
|
-
3. **Check logs:** Run `/logs errors` to see recent errors or `/logs module bootstrap` for startup logs
|
|
493
|
-
4. **Check status:** Run `/mcp` to see connection status
|
|
494
|
-
5. **Reinstall:** Try `/plugin uninstall bluera-knowledge` then `/plugin install bluera-knowledge@bluera`
|
|
495
|
-
|
|
496
|
-
**Common MCP failure causes:**
|
|
497
|
-
|
|
498
|
-
| Symptom | Cause | Fix |
|
|
499
|
-
|---------|-------|-----|
|
|
500
|
-
| `npm ERR! ERESOLVE` in logs | Peer dependency conflict | Fixed in v0.22.6+ with npm flag |
|
|
501
|
-
| Old plugin version running | Multiple cached versions | Fixed in v0.22.7+ (version sorting) |
|
|
502
|
-
| `make not found` | Missing build tools | Install `build-essential` (Linux) |
|
|
503
|
-
| Compilation errors on Node 24 | V8 API changes | Use Node.js v20.x or v22.x |
|
|
504
|
-
|
|
505
|
-
If the issue persists, check that Claude Code is v2.0.65 or later (earlier versions had MCP loading bugs).
|
|
506
|
-
</details>
|
|
507
|
-
|
|
508
|
-
<details>
|
|
509
|
-
<summary><b>🌐 Web crawling fails</b></summary>
|
|
510
|
-
|
|
511
|
-
Check Playwright browser installation:
|
|
512
|
-
|
|
513
|
-
```bash
|
|
514
|
-
npx playwright install chromium
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
The plugin attempts to auto-install Playwright browsers on first use, but manual installation may be needed in some environments.
|
|
518
|
-
</details>
|
|
519
|
-
|
|
520
|
-
<details>
|
|
521
|
-
<summary><b>🔍 Search returns no results</b></summary>
|
|
522
|
-
|
|
523
|
-
1. Verify store exists: `/bluera-knowledge:stores`
|
|
524
|
-
2. Check store is indexed: `/bluera-knowledge:index <store-name>`
|
|
525
|
-
3. Try broader search terms
|
|
526
|
-
4. Verify you're searching the correct store with `--stores=<name>`
|
|
527
|
-
</details>
|
|
528
|
-
|
|
529
|
-
<details>
|
|
530
|
-
<summary><b>⚠️ "Model mismatch" error</b></summary>
|
|
531
|
-
|
|
532
|
-
This error occurs when a store was indexed with a different embedding model than the current configuration. As of v0.20+, stores are indexed with `bge-small-en-v1.5` (previously `all-MiniLM-L6-v2`).
|
|
533
|
-
|
|
534
|
-
**Solution:** Reindex the affected store:
|
|
535
|
-
|
|
536
|
-
```bash
|
|
537
|
-
/bluera-knowledge:index <store-name>
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
**Check model status for all stores:**
|
|
541
|
-
|
|
542
|
-
```bash
|
|
543
|
-
# Via MCP execute command
|
|
544
|
-
execute stores:check-models
|
|
545
|
-
```
|
|
546
|
-
|
|
547
|
-
This lists all stores with their embedding model and flags any that need reindexing.
|
|
548
|
-
</details>
|
|
549
|
-
|
|
550
|
-
<details>
|
|
551
|
-
<summary><b>❓ "Store not found" error</b></summary>
|
|
552
|
-
|
|
553
|
-
List all stores to see available names and IDs:
|
|
554
|
-
|
|
555
|
-
```bash
|
|
556
|
-
/bluera-knowledge:stores
|
|
557
|
-
```
|
|
558
|
-
|
|
559
|
-
Use the exact store name or ID shown in the table.
|
|
560
|
-
</details>
|
|
561
|
-
|
|
562
|
-
<details>
|
|
563
|
-
<summary><b>🔨 Native module compilation fails (Node.js v24)</b></summary>
|
|
564
|
-
|
|
565
|
-
tree-sitter and lancedb require native module compilation. Node.js v24 introduced V8 API changes that break these modules.
|
|
566
|
-
|
|
567
|
-
**Solution:** Use Node.js v20.x or v22.x (LTS versions):
|
|
568
|
-
|
|
569
|
-
```bash
|
|
570
|
-
# Using nvm
|
|
571
|
-
nvm install 22
|
|
572
|
-
nvm use 22
|
|
573
|
-
```
|
|
574
|
-
|
|
575
|
-
Run `/bluera-knowledge:doctor` to verify your environment.
|
|
576
|
-
</details>
|
|
577
|
-
|
|
578
|
-
<details>
|
|
579
|
-
<summary><b>🐧 Linux: "make not found" or build errors</b></summary>
|
|
580
|
-
|
|
581
|
-
Native modules require build tools:
|
|
582
|
-
|
|
583
|
-
```bash
|
|
584
|
-
# Debian/Ubuntu
|
|
585
|
-
sudo apt install build-essential
|
|
586
|
-
|
|
587
|
-
# Fedora/RHEL
|
|
588
|
-
sudo dnf groupinstall "Development Tools"
|
|
589
|
-
```
|
|
590
|
-
|
|
591
|
-
Then restart Claude Code for auto-setup to complete.
|
|
592
|
-
</details>
|
|
593
|
-
|
|
594
|
-
<details>
|
|
595
|
-
<summary><b>⏱️ Indexing is slow or fails</b></summary>
|
|
596
|
-
|
|
597
|
-
Large repositories (10,000+ files) take longer to index. If indexing fails:
|
|
598
|
-
|
|
599
|
-
1. Check available disk space
|
|
600
|
-
2. Ensure the source repository/folder is accessible
|
|
601
|
-
3. For repo stores, verify git is installed: `git --version`
|
|
602
|
-
4. Check for network connectivity (for repo stores)
|
|
603
|
-
5. Check logs for errors: `/logs errors` or `/logs search "index"`
|
|
604
|
-
</details>
|
|
605
|
-
|
|
606
|
-
<details>
|
|
607
|
-
<summary><b>🤖 "Claude CLI not found" during crawl</b></summary>
|
|
608
|
-
|
|
609
|
-
This means intelligent crawling is unavailable. The crawler will automatically use simple BFS mode instead.
|
|
610
|
-
|
|
611
|
-
To enable intelligent crawling with `--crawl` and `--extract`:
|
|
612
|
-
1. Install Claude Code: https://claude.com/code
|
|
613
|
-
2. Ensure `claude` command is in PATH: `which claude`
|
|
614
|
-
|
|
615
|
-
Simple mode still crawls effectively—it just doesn't use AI to select which pages to crawl or extract specific content.
|
|
616
|
-
</details>
|
|
617
|
-
|
|
618
|
-
<details>
|
|
619
|
-
<summary><b>📋 How to view logs for debugging</b></summary>
|
|
620
|
-
|
|
621
|
-
The plugin logs all MCP server operations to `.bluera/bluera-knowledge/logs/app.log` (relative to project root).
|
|
622
|
-
|
|
623
|
-
**View logs using the `/logs` command:**
|
|
624
|
-
|
|
625
|
-
```bash
|
|
626
|
-
/logs # Watch logs in real-time (tail -f)
|
|
627
|
-
/logs view 50 # View last 50 log entries
|
|
628
|
-
/logs errors # Show only error-level logs
|
|
629
|
-
/logs module mcp-store # Filter by module (mcp-server, mcp-store, mcp-execute, mcp-job, mcp-sync, bootstrap)
|
|
630
|
-
/logs search "pattern" # Search for a pattern
|
|
631
|
-
```
|
|
632
|
-
|
|
633
|
-
**Log modules:**
|
|
634
|
-
- `bootstrap` - MCP server startup and dependency installation
|
|
635
|
-
- `mcp-server` - Core MCP server operations
|
|
636
|
-
- `mcp-store` - Store create/list/delete operations
|
|
637
|
-
- `mcp-search` - Search queries and results
|
|
638
|
-
- `mcp-execute` - Meta-tool command execution
|
|
639
|
-
- `mcp-job` - Background job status
|
|
640
|
-
- `mcp-sync` - Store sync operations
|
|
641
|
-
|
|
642
|
-
**Manual access:**
|
|
643
|
-
```bash
|
|
644
|
-
tail -f .bluera/bluera-knowledge/logs/app.log
|
|
645
|
-
```
|
|
646
|
-
|
|
647
|
-
Logs are JSON formatted (NDJSON) and can be processed with `jq` for pretty-printing.
|
|
648
|
-
</details>
|
|
455
|
+
Run `/bluera-knowledge:doctor` for quick diagnostics (works even when MCP is broken).
|
|
456
|
+
|
|
457
|
+
**Common issues:** See [docs/troubleshooting.md](docs/troubleshooting.md) for solutions to:
|
|
458
|
+
- Command not found or not recognized
|
|
459
|
+
- MCP server failures
|
|
460
|
+
- Web crawling issues
|
|
461
|
+
- Search returning no results
|
|
462
|
+
- Model mismatch errors
|
|
463
|
+
- Native module compilation (Node.js v24)
|
|
464
|
+
- Linux build tool requirements
|
|
465
|
+
- Slow indexing
|
|
466
|
+
- Log viewing and debugging
|
|
649
467
|
|
|
650
468
|
---
|
|
651
469
|
|
|
@@ -827,6 +645,7 @@ This ensures:
|
|
|
827
645
|
| [Commands Reference](docs/commands.md) | All slash commands with parameters and examples |
|
|
828
646
|
| [Crawler Architecture](docs/crawler-architecture.md) | How the intelligent web crawler works |
|
|
829
647
|
| [Token Efficiency](docs/token-efficiency.md) | How BK reduces token consumption vs web search |
|
|
648
|
+
| [Troubleshooting](docs/troubleshooting.md) | Common issues and solutions |
|
|
830
649
|
| [CONTRIBUTING](CONTRIBUTING.md) | Development setup, testing, and release process |
|
|
831
650
|
|
|
832
651
|
---
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
createLogger,
|
|
3
3
|
summarizePayload,
|
|
4
4
|
truncateForLog
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WP2GERAJ.js";
|
|
6
6
|
|
|
7
7
|
// src/crawl/intelligent-crawler.ts
|
|
8
8
|
import { EventEmitter } from "events";
|
|
@@ -916,4 +916,4 @@ export {
|
|
|
916
916
|
getCrawlStrategy,
|
|
917
917
|
IntelligentCrawler
|
|
918
918
|
};
|
|
919
|
-
//# sourceMappingURL=chunk-
|
|
919
|
+
//# sourceMappingURL=chunk-BYLIDCWD.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
isRepoStoreDefinition,
|
|
10
10
|
isWebStoreDefinition,
|
|
11
11
|
summarizePayload
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WP2GERAJ.js";
|
|
13
13
|
import {
|
|
14
14
|
checkStoreModelCompatibility
|
|
15
15
|
} from "./chunk-H25AEF47.js";
|
|
@@ -2402,4 +2402,4 @@ export {
|
|
|
2402
2402
|
createMCPServer,
|
|
2403
2403
|
runMCPServer
|
|
2404
2404
|
};
|
|
2405
|
-
//# sourceMappingURL=chunk-
|
|
2405
|
+
//# sourceMappingURL=chunk-UXT3BCAH.js.map
|
|
@@ -2207,20 +2207,17 @@ var ConfigService = class {
|
|
|
2207
2207
|
import { readFile as readFile3, writeFile as writeFile3, access as access2 } from "fs/promises";
|
|
2208
2208
|
import { join as join6 } from "path";
|
|
2209
2209
|
var REQUIRED_PATTERNS = [
|
|
2210
|
-
".bluera
|
|
2211
|
-
"!.bluera/",
|
|
2210
|
+
".bluera/*",
|
|
2212
2211
|
"!.bluera/bluera-knowledge/",
|
|
2212
|
+
".bluera/bluera-knowledge/*",
|
|
2213
2213
|
"!.bluera/bluera-knowledge/stores.config.json",
|
|
2214
2214
|
"!.bluera/bluera-knowledge/config.json",
|
|
2215
2215
|
"!.bluera/bluera-knowledge/skill-activation.json",
|
|
2216
2216
|
".bluera/bluera-knowledge/data/",
|
|
2217
2217
|
".bluera/bluera-knowledge/logs/"
|
|
2218
2218
|
];
|
|
2219
|
-
var
|
|
2220
|
-
# Bluera Knowledge
|
|
2221
|
-
# Config files (stores.config.json, config.json, skill-activation.json) can be committed
|
|
2222
|
-
# Data directory (vector DB, cloned repos) and logs are not committed
|
|
2223
|
-
`;
|
|
2219
|
+
var SECTION_BEGIN = "# BEGIN Bluera Knowledge";
|
|
2220
|
+
var SECTION_END = "# END Bluera Knowledge";
|
|
2224
2221
|
async function fileExists2(path4) {
|
|
2225
2222
|
try {
|
|
2226
2223
|
await access2(path4);
|
|
@@ -2229,13 +2226,73 @@ async function fileExists2(path4) {
|
|
|
2229
2226
|
return false;
|
|
2230
2227
|
}
|
|
2231
2228
|
}
|
|
2229
|
+
function isPatternSatisfied(requiredPattern, existingLines) {
|
|
2230
|
+
if (existingLines.includes(requiredPattern)) {
|
|
2231
|
+
return true;
|
|
2232
|
+
}
|
|
2233
|
+
switch (requiredPattern) {
|
|
2234
|
+
case ".bluera/*":
|
|
2235
|
+
return existingLines.includes(".bluera/");
|
|
2236
|
+
case "!.bluera/bluera-knowledge/":
|
|
2237
|
+
return existingLines.includes("!.bluera/bluera-knowledge");
|
|
2238
|
+
case ".bluera/bluera-knowledge/data/":
|
|
2239
|
+
case ".bluera/bluera-knowledge/logs/":
|
|
2240
|
+
return existingLines.includes(".bluera/bluera-knowledge/*");
|
|
2241
|
+
default:
|
|
2242
|
+
return false;
|
|
2243
|
+
}
|
|
2244
|
+
}
|
|
2245
|
+
function removeBkSection(content) {
|
|
2246
|
+
const lines = content.split("\n");
|
|
2247
|
+
const outputLines = [];
|
|
2248
|
+
let removed = false;
|
|
2249
|
+
let i = 0;
|
|
2250
|
+
while (i < lines.length) {
|
|
2251
|
+
const line = lines[i] ?? "";
|
|
2252
|
+
const trimmed = line.trim();
|
|
2253
|
+
if (trimmed === SECTION_BEGIN) {
|
|
2254
|
+
removed = true;
|
|
2255
|
+
i++;
|
|
2256
|
+
while (i < lines.length && (lines[i] ?? "").trim() !== SECTION_END) {
|
|
2257
|
+
i++;
|
|
2258
|
+
}
|
|
2259
|
+
if (i < lines.length) {
|
|
2260
|
+
i++;
|
|
2261
|
+
}
|
|
2262
|
+
continue;
|
|
2263
|
+
}
|
|
2264
|
+
if (trimmed === "# Bluera Knowledge") {
|
|
2265
|
+
removed = true;
|
|
2266
|
+
i++;
|
|
2267
|
+
while (i < lines.length) {
|
|
2268
|
+
const lt = (lines[i] ?? "").trim();
|
|
2269
|
+
if (lt === "" || lt.startsWith("#") || lt.includes(".bluera")) {
|
|
2270
|
+
i++;
|
|
2271
|
+
} else {
|
|
2272
|
+
break;
|
|
2273
|
+
}
|
|
2274
|
+
}
|
|
2275
|
+
continue;
|
|
2276
|
+
}
|
|
2277
|
+
outputLines.push(line);
|
|
2278
|
+
i++;
|
|
2279
|
+
}
|
|
2280
|
+
let lastIdx = outputLines.length - 1;
|
|
2281
|
+
while (lastIdx >= 0 && outputLines[lastIdx]?.trim() === "") {
|
|
2282
|
+
outputLines.pop();
|
|
2283
|
+
lastIdx--;
|
|
2284
|
+
}
|
|
2285
|
+
const cleaned = outputLines.length > 0 ? `${outputLines.join("\n")}
|
|
2286
|
+
` : "";
|
|
2287
|
+
return { cleaned, removed };
|
|
2288
|
+
}
|
|
2232
2289
|
var GitignoreService = class {
|
|
2233
2290
|
gitignorePath;
|
|
2234
2291
|
constructor(projectRoot) {
|
|
2235
2292
|
this.gitignorePath = join6(projectRoot, ".gitignore");
|
|
2236
2293
|
}
|
|
2237
2294
|
/**
|
|
2238
|
-
* Check if all required patterns are present in .gitignore
|
|
2295
|
+
* Check if all required patterns are semantically present in .gitignore
|
|
2239
2296
|
*/
|
|
2240
2297
|
async hasRequiredPatterns() {
|
|
2241
2298
|
const exists = await fileExists2(this.gitignorePath);
|
|
@@ -2244,50 +2301,62 @@ var GitignoreService = class {
|
|
|
2244
2301
|
}
|
|
2245
2302
|
const content = await readFile3(this.gitignorePath, "utf-8");
|
|
2246
2303
|
const lines = content.split("\n").map((l) => l.trim());
|
|
2247
|
-
|
|
2248
|
-
if (!lines.includes(pattern)) {
|
|
2249
|
-
return false;
|
|
2250
|
-
}
|
|
2251
|
-
}
|
|
2252
|
-
return true;
|
|
2304
|
+
return REQUIRED_PATTERNS.every((pattern) => isPatternSatisfied(pattern, lines));
|
|
2253
2305
|
}
|
|
2254
2306
|
/**
|
|
2255
2307
|
* Ensure required .gitignore patterns are present.
|
|
2256
2308
|
*
|
|
2257
2309
|
* - Creates .gitignore if it doesn't exist
|
|
2258
|
-
* -
|
|
2259
|
-
* -
|
|
2310
|
+
* - Removes existing managed sections (old or new format)
|
|
2311
|
+
* - Appends only semantically missing patterns with BEGIN/END markers
|
|
2312
|
+
* - Persists cleanup even when no patterns are missing
|
|
2260
2313
|
*
|
|
2261
2314
|
* @returns Object with updated flag and descriptive message
|
|
2262
2315
|
*/
|
|
2263
2316
|
async ensureGitignorePatterns() {
|
|
2264
2317
|
const exists = await fileExists2(this.gitignorePath);
|
|
2265
2318
|
if (!exists) {
|
|
2266
|
-
const content =
|
|
2267
|
-
${REQUIRED_PATTERNS.join("\n")}
|
|
2268
|
-
`;
|
|
2319
|
+
const content = [SECTION_BEGIN, ...REQUIRED_PATTERNS, SECTION_END, ""].join("\n");
|
|
2269
2320
|
await writeFile3(this.gitignorePath, content);
|
|
2270
2321
|
return {
|
|
2271
2322
|
updated: true,
|
|
2272
2323
|
message: "Created .gitignore with Bluera Knowledge patterns"
|
|
2273
2324
|
};
|
|
2274
2325
|
}
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
const
|
|
2326
|
+
let rawContent = await readFile3(this.gitignorePath, "utf-8");
|
|
2327
|
+
rawContent = rawContent.replace(/\r\n/g, "\n");
|
|
2328
|
+
const { cleaned, removed } = removeBkSection(rawContent);
|
|
2329
|
+
const cleanedLines = cleaned.split("\n").map((l) => l.trim());
|
|
2330
|
+
const missingPatterns = REQUIRED_PATTERNS.filter(
|
|
2331
|
+
(pattern) => !isPatternSatisfied(pattern, cleanedLines)
|
|
2332
|
+
);
|
|
2278
2333
|
if (missingPatterns.length === 0) {
|
|
2334
|
+
if (removed) {
|
|
2335
|
+
await writeFile3(this.gitignorePath, cleaned);
|
|
2336
|
+
return {
|
|
2337
|
+
updated: true,
|
|
2338
|
+
message: "Cleaned redundant Bluera Knowledge section from .gitignore"
|
|
2339
|
+
};
|
|
2340
|
+
}
|
|
2279
2341
|
return {
|
|
2280
2342
|
updated: false,
|
|
2281
2343
|
message: "All Bluera Knowledge patterns already present in .gitignore"
|
|
2282
2344
|
};
|
|
2283
2345
|
}
|
|
2284
|
-
let newContent =
|
|
2285
|
-
if (
|
|
2346
|
+
let newContent = cleaned;
|
|
2347
|
+
if (newContent.length > 0) {
|
|
2348
|
+
if (!newContent.endsWith("\n")) {
|
|
2349
|
+
newContent += "\n";
|
|
2350
|
+
}
|
|
2286
2351
|
newContent += "\n";
|
|
2287
2352
|
}
|
|
2288
|
-
newContent +=
|
|
2289
|
-
newContent
|
|
2290
|
-
|
|
2353
|
+
newContent += [SECTION_BEGIN, ...missingPatterns, SECTION_END, ""].join("\n");
|
|
2354
|
+
if (newContent === rawContent) {
|
|
2355
|
+
return {
|
|
2356
|
+
updated: false,
|
|
2357
|
+
message: "All Bluera Knowledge patterns already present in .gitignore"
|
|
2358
|
+
};
|
|
2359
|
+
}
|
|
2291
2360
|
await writeFile3(this.gitignorePath, newContent);
|
|
2292
2361
|
return {
|
|
2293
2362
|
updated: true,
|
|
@@ -6625,4 +6694,4 @@ export {
|
|
|
6625
6694
|
createServices,
|
|
6626
6695
|
destroyServices
|
|
6627
6696
|
};
|
|
6628
|
-
//# sourceMappingURL=chunk-
|
|
6697
|
+
//# sourceMappingURL=chunk-WP2GERAJ.js.map
|