bluera-knowledge 0.16.6 → 0.17.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/CHANGELOG.md +19 -0
- package/dist/{chunk-OMC3RAZT.js → chunk-RAXRD23K.js} +2 -2
- package/dist/{chunk-WYZQUKUD.js → chunk-VKTVMW45.js} +28 -18
- package/dist/chunk-VKTVMW45.js.map +1 -0
- package/dist/{chunk-3EQRQOXD.js → chunk-ZGEQCLOZ.js} +2 -2
- package/dist/index.js +3 -3
- package/dist/mcp/bootstrap.js +19 -2
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +2 -2
- package/dist/workers/background-worker-cli.js +2 -2
- package/package.json +1 -5
- package/.claude-plugin/plugin.json +0 -9
- package/commands/add-folder.md +0 -48
- package/commands/add-repo.md +0 -50
- package/commands/cancel.md +0 -63
- package/commands/check-status.md +0 -78
- package/commands/crawl.md +0 -54
- package/commands/index.md +0 -48
- package/commands/remove-store.md +0 -52
- package/commands/search.md +0 -86
- package/commands/search.sh +0 -63
- package/commands/skill-activation.md +0 -130
- package/commands/stores.md +0 -54
- package/commands/suggest.md +0 -82
- package/commands/sync.md +0 -96
- package/commands/test-plugin.md +0 -408
- package/commands/uninstall.md +0 -65
- package/dist/chunk-WYZQUKUD.js.map +0 -1
- package/hooks/check-dependencies.sh +0 -145
- package/hooks/format-search-results.py +0 -132
- package/hooks/hooks.json +0 -54
- package/hooks/job-status-hook.sh +0 -51
- package/hooks/posttooluse-bk-reminder.py +0 -166
- package/hooks/skill-activation.py +0 -194
- package/hooks/skill-rules.json +0 -122
- package/skills/advanced-workflows/SKILL.md +0 -273
- package/skills/knowledge-search/SKILL.md +0 -110
- package/skills/search-optimization/SKILL.md +0 -396
- package/skills/store-lifecycle/SKILL.md +0 -470
- package/skills/when-to-query/SKILL.md +0 -160
- /package/dist/{chunk-OMC3RAZT.js.map → chunk-RAXRD23K.js.map} +0 -0
- /package/dist/{chunk-3EQRQOXD.js.map → chunk-ZGEQCLOZ.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
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.17.1](https://github.com/blueraai/bluera-knowledge/compare/v0.17.0...v0.17.1) (2026-01-18)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **config:** use per-repo paths instead of global directories ([d642fec](https://github.com/blueraai/bluera-knowledge/commit/d642fec3510ef546dd5dc94f91410a38e8aea0e4))
|
|
11
|
+
|
|
12
|
+
## [0.17.0](https://github.com/blueraai/bluera-knowledge/compare/v0.16.6...v0.17.0) (2026-01-18)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **bootstrap:** add interrupted install recovery via lock file ([5bf4773](https://github.com/blueraai/bluera-knowledge/commit/5bf4773b59f27fe04fc6e8f7da0fe37cc4902ac7))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **settings:** narrow deny rules to block execution only ([daf758b](https://github.com/blueraai/bluera-knowledge/commit/daf758b211eb2e2179d198485f0a7705fb137759))
|
|
23
|
+
|
|
5
24
|
## [0.16.4](https://github.com/blueraai/bluera-knowledge/compare/v0.16.3...v0.16.4) (2026-01-17)
|
|
6
25
|
|
|
7
26
|
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
createLogger,
|
|
4
4
|
summarizePayload,
|
|
5
5
|
truncateForLog
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VKTVMW45.js";
|
|
7
7
|
|
|
8
8
|
// src/crawl/intelligent-crawler.ts
|
|
9
9
|
import { EventEmitter } from "events";
|
|
@@ -833,4 +833,4 @@ export {
|
|
|
833
833
|
getCrawlStrategy,
|
|
834
834
|
IntelligentCrawler
|
|
835
835
|
};
|
|
836
|
-
//# sourceMappingURL=chunk-
|
|
836
|
+
//# sourceMappingURL=chunk-RAXRD23K.js.map
|
|
@@ -1902,7 +1902,7 @@ var CodeGraphService = class {
|
|
|
1902
1902
|
// src/services/config.service.ts
|
|
1903
1903
|
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, access } from "fs/promises";
|
|
1904
1904
|
import { homedir as homedir2 } from "os";
|
|
1905
|
-
import { dirname as dirname3, resolve } from "path";
|
|
1905
|
+
import { dirname as dirname3, join as join5, resolve } from "path";
|
|
1906
1906
|
|
|
1907
1907
|
// src/services/project-root.service.ts
|
|
1908
1908
|
import { existsSync as existsSync3, statSync, realpathSync } from "fs";
|
|
@@ -2015,6 +2015,7 @@ var DEFAULT_CONFIG = {
|
|
|
2015
2015
|
};
|
|
2016
2016
|
|
|
2017
2017
|
// src/services/config.service.ts
|
|
2018
|
+
var DEFAULT_CONFIG_PATH = ".bluera/bluera-knowledge/config.json";
|
|
2018
2019
|
async function fileExists(path4) {
|
|
2019
2020
|
try {
|
|
2020
2021
|
await access(path4);
|
|
@@ -2027,12 +2028,16 @@ var ConfigService = class {
|
|
|
2027
2028
|
configPath;
|
|
2028
2029
|
dataDir;
|
|
2029
2030
|
config = null;
|
|
2030
|
-
constructor(configPath
|
|
2031
|
-
|
|
2031
|
+
constructor(configPath, dataDir, projectRoot) {
|
|
2032
|
+
const root = projectRoot ?? ProjectRootService.resolve();
|
|
2033
|
+
if (configPath !== void 0 && configPath !== "") {
|
|
2034
|
+
this.configPath = configPath;
|
|
2035
|
+
} else {
|
|
2036
|
+
this.configPath = join5(root, DEFAULT_CONFIG_PATH);
|
|
2037
|
+
}
|
|
2032
2038
|
if (dataDir !== void 0 && dataDir !== "") {
|
|
2033
2039
|
this.dataDir = dataDir;
|
|
2034
2040
|
} else {
|
|
2035
|
-
const root = projectRoot ?? ProjectRootService.resolve();
|
|
2036
2041
|
this.dataDir = this.expandPath(DEFAULT_CONFIG.dataDir, root);
|
|
2037
2042
|
}
|
|
2038
2043
|
}
|
|
@@ -2064,6 +2069,9 @@ var ConfigService = class {
|
|
|
2064
2069
|
resolveDataDir() {
|
|
2065
2070
|
return this.dataDir;
|
|
2066
2071
|
}
|
|
2072
|
+
resolveConfigPath() {
|
|
2073
|
+
return this.configPath;
|
|
2074
|
+
}
|
|
2067
2075
|
expandPath(path4, baseDir) {
|
|
2068
2076
|
if (path4.startsWith("~")) {
|
|
2069
2077
|
return path4.replace("~", homedir2());
|
|
@@ -2077,17 +2085,19 @@ var ConfigService = class {
|
|
|
2077
2085
|
|
|
2078
2086
|
// src/services/gitignore.service.ts
|
|
2079
2087
|
import { readFile as readFile3, writeFile as writeFile3, access as access2 } from "fs/promises";
|
|
2080
|
-
import { join as
|
|
2088
|
+
import { join as join6 } from "path";
|
|
2081
2089
|
var REQUIRED_PATTERNS = [
|
|
2082
2090
|
".bluera/",
|
|
2083
2091
|
"!.bluera/",
|
|
2084
2092
|
"!.bluera/bluera-knowledge/",
|
|
2085
2093
|
"!.bluera/bluera-knowledge/stores.config.json",
|
|
2094
|
+
"!.bluera/bluera-knowledge/config.json",
|
|
2095
|
+
"!.bluera/bluera-knowledge/skill-activation.json",
|
|
2086
2096
|
".bluera/bluera-knowledge/data/"
|
|
2087
2097
|
];
|
|
2088
2098
|
var SECTION_HEADER = `
|
|
2089
2099
|
# Bluera Knowledge
|
|
2090
|
-
#
|
|
2100
|
+
# Config files (stores.config.json, config.json, skill-activation.json) can be committed
|
|
2091
2101
|
# Data directory (vector DB, cloned repos) is not committed
|
|
2092
2102
|
`;
|
|
2093
2103
|
async function fileExists2(path4) {
|
|
@@ -2101,7 +2111,7 @@ async function fileExists2(path4) {
|
|
|
2101
2111
|
var GitignoreService = class {
|
|
2102
2112
|
gitignorePath;
|
|
2103
2113
|
constructor(projectRoot) {
|
|
2104
|
-
this.gitignorePath =
|
|
2114
|
+
this.gitignorePath = join6(projectRoot, ".gitignore");
|
|
2105
2115
|
}
|
|
2106
2116
|
/**
|
|
2107
2117
|
* Check if all required patterns are present in .gitignore
|
|
@@ -2174,7 +2184,7 @@ ${REQUIRED_PATTERNS.join("\n")}
|
|
|
2174
2184
|
// src/services/index.service.ts
|
|
2175
2185
|
import { createHash as createHash2 } from "crypto";
|
|
2176
2186
|
import { readFile as readFile4, readdir } from "fs/promises";
|
|
2177
|
-
import { join as
|
|
2187
|
+
import { join as join7, extname, basename } from "path";
|
|
2178
2188
|
|
|
2179
2189
|
// src/services/chunking.service.ts
|
|
2180
2190
|
var CHUNK_PRESETS = {
|
|
@@ -2677,7 +2687,7 @@ var IndexService = class {
|
|
|
2677
2687
|
const files = [];
|
|
2678
2688
|
const entries = await readdir(dir, { withFileTypes: true });
|
|
2679
2689
|
for (const entry of entries) {
|
|
2680
|
-
const fullPath =
|
|
2690
|
+
const fullPath = join7(dir, entry.name);
|
|
2681
2691
|
if (entry.isDirectory()) {
|
|
2682
2692
|
if (!["node_modules", ".git", "dist", "build"].includes(entry.name)) {
|
|
2683
2693
|
files.push(...await this.scanDirectory(fullPath));
|
|
@@ -3878,7 +3888,7 @@ var SearchService = class {
|
|
|
3878
3888
|
|
|
3879
3889
|
// src/services/store-definition.service.ts
|
|
3880
3890
|
import { readFile as readFile5, writeFile as writeFile4, mkdir as mkdir3, access as access3 } from "fs/promises";
|
|
3881
|
-
import { dirname as dirname4, resolve as resolve2, isAbsolute, join as
|
|
3891
|
+
import { dirname as dirname4, resolve as resolve2, isAbsolute, join as join8 } from "path";
|
|
3882
3892
|
|
|
3883
3893
|
// src/types/store-definition.ts
|
|
3884
3894
|
import { z as z2 } from "zod";
|
|
@@ -3943,7 +3953,7 @@ var StoreDefinitionService = class {
|
|
|
3943
3953
|
config = null;
|
|
3944
3954
|
constructor(projectRoot) {
|
|
3945
3955
|
this.projectRoot = projectRoot ?? ProjectRootService.resolve();
|
|
3946
|
-
this.configPath =
|
|
3956
|
+
this.configPath = join8(this.projectRoot, ".bluera/bluera-knowledge/stores.config.json");
|
|
3947
3957
|
}
|
|
3948
3958
|
/**
|
|
3949
3959
|
* Load store definitions from config file.
|
|
@@ -4083,7 +4093,7 @@ var StoreDefinitionService = class {
|
|
|
4083
4093
|
// src/services/store.service.ts
|
|
4084
4094
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
4085
4095
|
import { readFile as readFile6, writeFile as writeFile5, mkdir as mkdir5, stat, access as access4 } from "fs/promises";
|
|
4086
|
-
import { join as
|
|
4096
|
+
import { join as join9, resolve as resolve3 } from "path";
|
|
4087
4097
|
|
|
4088
4098
|
// src/plugin/git-clone.ts
|
|
4089
4099
|
import { spawn } from "child_process";
|
|
@@ -4231,7 +4241,7 @@ var StoreService = class {
|
|
|
4231
4241
|
case "repo": {
|
|
4232
4242
|
let repoPath = input.path;
|
|
4233
4243
|
if (input.url !== void 0) {
|
|
4234
|
-
const cloneDir =
|
|
4244
|
+
const cloneDir = join9(this.dataDir, "repos", id);
|
|
4235
4245
|
const result = await cloneRepository({
|
|
4236
4246
|
url: input.url,
|
|
4237
4247
|
targetDir: cloneDir,
|
|
@@ -4358,7 +4368,7 @@ var StoreService = class {
|
|
|
4358
4368
|
return ok(void 0);
|
|
4359
4369
|
}
|
|
4360
4370
|
async loadRegistry() {
|
|
4361
|
-
const registryPath =
|
|
4371
|
+
const registryPath = join9(this.dataDir, "stores.json");
|
|
4362
4372
|
const exists = await fileExists4(registryPath);
|
|
4363
4373
|
if (!exists) {
|
|
4364
4374
|
this.registry = { stores: [] };
|
|
@@ -4383,7 +4393,7 @@ var StoreService = class {
|
|
|
4383
4393
|
}
|
|
4384
4394
|
}
|
|
4385
4395
|
async saveRegistry() {
|
|
4386
|
-
const registryPath =
|
|
4396
|
+
const registryPath = join9(this.dataDir, "stores.json");
|
|
4387
4397
|
await writeFile5(registryPath, JSON.stringify(this.registry, null, 2));
|
|
4388
4398
|
}
|
|
4389
4399
|
};
|
|
@@ -4725,9 +4735,9 @@ var PythonBridge = class {
|
|
|
4725
4735
|
|
|
4726
4736
|
// src/db/embeddings.ts
|
|
4727
4737
|
import { homedir as homedir3 } from "os";
|
|
4728
|
-
import { join as
|
|
4738
|
+
import { join as join10 } from "path";
|
|
4729
4739
|
import { pipeline, env } from "@huggingface/transformers";
|
|
4730
|
-
env.cacheDir =
|
|
4740
|
+
env.cacheDir = join10(homedir3(), ".cache", "huggingface-transformers");
|
|
4731
4741
|
var EmbeddingEngine = class {
|
|
4732
4742
|
extractor = null;
|
|
4733
4743
|
modelName;
|
|
@@ -5114,4 +5124,4 @@ export {
|
|
|
5114
5124
|
createServices,
|
|
5115
5125
|
destroyServices
|
|
5116
5126
|
};
|
|
5117
|
-
//# sourceMappingURL=chunk-
|
|
5127
|
+
//# sourceMappingURL=chunk-VKTVMW45.js.map
|