bluera-knowledge 0.9.30 → 0.9.32

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.
@@ -0,0 +1,15 @@
1
+ # Code Review
2
+
3
+ Review the local codebase using multi-agent analysis. See @.claude/skills/code-review-repo/skill.md for process details.
4
+
5
+ ## Context
6
+
7
+ !`echo "---PROJECT---" && ls -la && echo "---CLAUDE.md FILES---" && find . -name CLAUDE.md 2>/dev/null`
8
+
9
+ ## Workflow
10
+
11
+ 1. **Gather context**: Find all CLAUDE.md files and source files
12
+ 2. **Multi-agent review**: Launch 5 parallel agents (CLAUDE.md compliance, bug scan, git history, PR comments, code comments)
13
+ 3. **Score issues**: Haiku agents score each issue 0-100 for confidence
14
+ 4. **Filter**: Only report issues with confidence >= 80
15
+ 5. **Output**: Print formatted results to console
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: code-review-repo
3
+ description: Review local codebase for bugs and CLAUDE.md compliance using multi-agent analysis
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Local Code Review
8
+
9
+ Review the entire local codebase for bugs, issues, and CLAUDE.md compliance.
10
+
11
+ ## Process
12
+
13
+ 1. **Gather CLAUDE.md files**: Use a Haiku agent to find all CLAUDE.md files in the repository (root and subdirectories)
14
+
15
+ 2. **Identify source files**: Determine which files to review:
16
+ - Include: `.ts`, `.tsx`, `.js`, `.jsx`, `.py`, `.rs`, `.go` and similar source files
17
+ - Exclude: `node_modules/`, `dist/`, `.git/`, vendor directories, generated files
18
+
19
+ 3. **Multi-agent review**: Launch 5 parallel Sonnet agents to independently review the codebase. Each agent returns a list of issues with reasons:
20
+ - **Agent #1**: Audit for CLAUDE.md compliance. Check that code follows guidelines in all relevant CLAUDE.md files.
21
+ - **Agent #2**: Shallow bug scan. Look for obvious bugs, error handling issues, and logic errors. Focus on significant bugs, not nitpicks.
22
+ - **Agent #3**: Git history context. Use git blame and history to identify patterns, recent changes, and potential issues in light of historical context.
23
+ - **Agent #4**: Previous PR comments. Check closed PRs that touched these files for any feedback that might apply.
24
+ - **Agent #5**: Code comment compliance. Ensure code follows any guidance in TODO, FIXME, NOTE, or other code comments.
25
+
26
+ 4. **Confidence scoring**: For each issue found, launch a parallel Haiku agent to score confidence (0-100):
27
+ - **0**: False positive, doesn't hold up to scrutiny
28
+ - **25**: Might be real, but unverified. Stylistic issues not in CLAUDE.md
29
+ - **50**: Real but minor, rarely hit in practice
30
+ - **75**: Verified real issue, important, directly impacts functionality or mentioned in CLAUDE.md
31
+ - **100**: Definitely real, frequently hit, evidence confirms
32
+
33
+ 5. **Filter**: Only report issues with score >= 80
34
+
35
+ ## False Positive Examples
36
+
37
+ Avoid flagging:
38
+ - Issues that linters/typecheckers catch (imports, types, formatting)
39
+ - General quality issues unless in CLAUDE.md
40
+ - Code with lint-ignore comments for that specific issue
41
+ - Pre-existing issues unrelated to recent changes
42
+ - Pedantic nitpicks a senior engineer wouldn't mention
43
+
44
+ ## Output Format
45
+
46
+ ### Code review
47
+
48
+ Found N issues:
49
+
50
+ 1. Brief description (CLAUDE.md says "...")
51
+ `file/path.ts:42`
52
+
53
+ 2. Brief description (bug due to missing error handling)
54
+ `file/path.ts:88-95`
55
+
56
+ ---
57
+
58
+ Or if no issues:
59
+
60
+ ### Code review
61
+
62
+ No issues found. Checked for bugs and CLAUDE.md compliance.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bluera-knowledge",
3
- "version": "0.9.30",
3
+ "version": "0.9.32",
4
4
  "description": "Clone repos, crawl docs, search locally. Fast, authoritative answers for AI coding agents without web lookups.",
5
5
  "author": {
6
6
  "name": "Bluera Inc",
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
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.9.32](https://github.com/blueraai/bluera-knowledge/compare/v0.9.31...v0.9.32) (2026-01-06)
6
+
7
+ ## [0.9.31](https://github.com/blueraai/bluera-knowledge/compare/v0.9.30...v0.9.31) (2026-01-06)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * address three bugs found during API testing ([862b7e6](https://github.com/blueraai/bluera-knowledge/commit/862b7e67c057c004ae788d9205c147b422339c67)), closes [#1](https://github.com/blueraai/bluera-knowledge/issues/1) [#2](https://github.com/blueraai/bluera-knowledge/issues/2) [#3](https://github.com/blueraai/bluera-knowledge/issues/3)
13
+
5
14
  ## [0.9.30](https://github.com/blueraai/bluera-knowledge/compare/v0.9.26...v0.9.30) (2026-01-06)
6
15
 
7
16
 
@@ -569,6 +569,9 @@ var StoreService = class {
569
569
  await this.loadRegistry();
570
570
  }
571
571
  async create(input) {
572
+ if (!input.name || input.name.trim() === "") {
573
+ return err(new Error("Store name cannot be empty"));
574
+ }
572
575
  const existing = await this.getByName(input.name);
573
576
  if (existing !== void 0) {
574
577
  return err(new Error(`Store with name "${input.name}" already exists`));
@@ -3593,6 +3596,25 @@ var LanceStore = class {
3593
3596
  this.tables.delete(tableName);
3594
3597
  }
3595
3598
  }
3599
+ close() {
3600
+ this.tables.clear();
3601
+ if (this.connection !== null) {
3602
+ this.connection.close();
3603
+ this.connection = null;
3604
+ }
3605
+ }
3606
+ /**
3607
+ * Async close that allows native code cleanup time.
3608
+ * Use this before process.exit() to prevent mutex crashes.
3609
+ */
3610
+ async closeAsync() {
3611
+ this.tables.clear();
3612
+ if (this.connection !== null) {
3613
+ this.connection.close();
3614
+ this.connection = null;
3615
+ await new Promise((resolve3) => setTimeout(resolve3, 100));
3616
+ }
3617
+ }
3596
3618
  getTableName(storeId) {
3597
3619
  return `documents_${storeId}`;
3598
3620
  }
@@ -3950,7 +3972,16 @@ async function createServices(configPath, dataDir, projectRoot) {
3950
3972
  }
3951
3973
  async function destroyServices(services) {
3952
3974
  logger4.info("Shutting down services");
3953
- await services.pythonBridge.stop();
3975
+ try {
3976
+ await services.lance.closeAsync();
3977
+ } catch (e) {
3978
+ logger4.error({ error: e }, "Error closing LanceStore");
3979
+ }
3980
+ try {
3981
+ await services.pythonBridge.stop();
3982
+ } catch (e) {
3983
+ logger4.error({ error: e }, "Error stopping Python bridge");
3984
+ }
3954
3985
  await shutdownLogger();
3955
3986
  }
3956
3987
 
@@ -3971,4 +4002,4 @@ export {
3971
4002
  createServices,
3972
4003
  destroyServices
3973
4004
  };
3974
- //# sourceMappingURL=chunk-NJUMU4X2.js.map
4005
+ //# sourceMappingURL=chunk-6PBP5DVD.js.map