@orquentra/codebuddy 2.5.0 → 2.6.0
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/README.md +8 -0
- package/dist/{chunk-KYK6RPAJ.js → chunk-JFDRBPYF.js} +2 -2
- package/dist/{chunk-JMWJ7V6Y.js → chunk-JPHJBCZB.js} +2 -2
- package/dist/{chunk-JMWJ7V6Y.js.map → chunk-JPHJBCZB.js.map} +1 -1
- package/dist/{chunk-ROQTT5ZO.js → chunk-N34XHWBA.js} +2 -2
- package/dist/{chunk-CQPCHMBS.js → chunk-SYWJG5NA.js} +2 -2
- package/dist/{chunk-3XYQGFPB.js → chunk-U4HAJLIB.js} +2 -2
- package/dist/{chunk-JDZ3VK26.js → chunk-UN57FKQX.js} +32 -5
- package/dist/chunk-UN57FKQX.js.map +1 -0
- package/dist/{chunk-Z5QB367W.js → chunk-VAKBJV26.js} +106 -22
- package/dist/chunk-VAKBJV26.js.map +1 -0
- package/dist/{chunk-4BYGTEJT.js → chunk-XBJQKCLU.js} +2 -2
- package/dist/cli/index.js +2 -2
- package/dist/{cloud-GP6G3EAK.js → cloud-7WM3YLI4.js} +3 -3
- package/dist/index.js +7 -7
- package/dist/{lean-command-DA4ZNKG3.js → lean-command-C5YPFKHP.js} +5 -5
- package/dist/{local-3NGNESNB.js → local-OTOY56B4.js} +3 -3
- package/dist/{main-BDVQAGAS.js → main-HFHLGID4.js} +201 -55
- package/dist/main-HFHLGID4.js.map +1 -0
- package/dist/{operations-EQGOFCBD.js → operations-LOBAQRLO.js} +6 -6
- package/package.json +1 -1
- package/dist/chunk-JDZ3VK26.js.map +0 -1
- package/dist/chunk-Z5QB367W.js.map +0 -1
- package/dist/main-BDVQAGAS.js.map +0 -1
- /package/dist/{chunk-KYK6RPAJ.js.map → chunk-JFDRBPYF.js.map} +0 -0
- /package/dist/{chunk-ROQTT5ZO.js.map → chunk-N34XHWBA.js.map} +0 -0
- /package/dist/{chunk-CQPCHMBS.js.map → chunk-SYWJG5NA.js.map} +0 -0
- /package/dist/{chunk-3XYQGFPB.js.map → chunk-U4HAJLIB.js.map} +0 -0
- /package/dist/{chunk-4BYGTEJT.js.map → chunk-XBJQKCLU.js.map} +0 -0
- /package/dist/{cloud-GP6G3EAK.js.map → cloud-7WM3YLI4.js.map} +0 -0
- /package/dist/{lean-command-DA4ZNKG3.js.map → lean-command-C5YPFKHP.js.map} +0 -0
- /package/dist/{local-3NGNESNB.js.map → local-OTOY56B4.js.map} +0 -0
- /package/dist/{operations-EQGOFCBD.js.map → operations-LOBAQRLO.js.map} +0 -0
package/README.md
CHANGED
|
@@ -20,6 +20,14 @@ The setup wizard configures the project and agent integration. Project context
|
|
|
20
20
|
works without a database; semantic memory recall optionally uses PostgreSQL
|
|
21
21
|
with pgvector and a local Hugging Face embedding model (no token needed).
|
|
22
22
|
|
|
23
|
+
Run setup inside the project you want CodeBuddy to read. Claude Desktop
|
|
24
|
+
registration saves that folder's absolute path, so restarting the desktop app
|
|
25
|
+
does not change which project is indexed. `serve` requires an initialized
|
|
26
|
+
project (`.codebuddy/config.json`) and refuses filesystem roots and home folders.
|
|
27
|
+
Older desktop registrations without a project path can be repaired by running
|
|
28
|
+
`codebuddy claude install` from the initialized project folder, then restarting
|
|
29
|
+
Claude Desktop.
|
|
30
|
+
|
|
23
31
|
## What it does
|
|
24
32
|
|
|
25
33
|
- **Task context:** relevant files, symbols, code excerpts, nearby dependencies,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EMBEDDING_DIMENSIONS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JPHJBCZB.js";
|
|
4
4
|
|
|
5
5
|
// src/providers/cloud.ts
|
|
6
6
|
var OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
@@ -96,4 +96,4 @@ export {
|
|
|
96
96
|
rerankOpenRouter,
|
|
97
97
|
rerankHuggingFace
|
|
98
98
|
};
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-JFDRBPYF.js.map
|
|
@@ -8,7 +8,7 @@ var LOCAL_EMBEDDING_MODEL = {
|
|
|
8
8
|
revision: "1dc7835ba0cb9c76a3618d0bf0c427c97671b3c8",
|
|
9
9
|
schema: "transformers.js@4-q8-cls-l2",
|
|
10
10
|
supportsBatch: true,
|
|
11
|
-
relevanceFloor: 0.
|
|
11
|
+
relevanceFloor: 0.84
|
|
12
12
|
};
|
|
13
13
|
var DEFAULT_RERANK_MODELS = {
|
|
14
14
|
local: {
|
|
@@ -96,4 +96,4 @@ export {
|
|
|
96
96
|
getModelContextWindow,
|
|
97
97
|
assertCompatibleEmbeddingModels
|
|
98
98
|
};
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-JPHJBCZB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/models.ts"],"sourcesContent":["export type ModelRole = \"primary\" | \"fallback\" | \"last_resort\";\nexport type ModelKind = \"embedding\" | \"llm\";\n\nexport type ModelDefinition = {\n id: string;\n role: ModelRole;\n kind: ModelKind;\n dimensions?: number;\n /** Actual deployment revision metadata; this does not pin Hugging Face requests. */\n revision?: string;\n schema?: string;\n contextWindow?: number;\n dailyCallBudget?: number;\n supportsBatch?: boolean;\n /**\n * Cosine at or above which a memory counts as semantically relevant to a\n * task on its own (without a shared word or path). Calibrated per model by\n * `npm run eval:semantic`; cosines are not comparable across models.\n */\n relevanceFloor?: number;\n};\n\nexport const EMBEDDING_DIMENSIONS = 384;\n\n/**\n * Default local embedder (ONNX via transformers.js, no network after the first\n * download): ModernBERT-based, 384-d, 8k context, trained on code retrieval.\n * The revision is a pinned commit so the embedding space never drifts.\n */\nexport const LOCAL_EMBEDDING_MODEL = {\n id: \"onnx-community/granite-embedding-small-english-r2-ONNX\",\n role: \"primary\",\n kind: \"embedding\",\n dimensions: EMBEDDING_DIMENSIONS,\n revision: \"1dc7835ba0cb9c76a3618d0bf0c427c97671b3c8\",\n schema: \"transformers.js@4-q8-cls-l2\",\n supportsBatch: true,\n relevanceFloor: 0.
|
|
1
|
+
{"version":3,"sources":["../src/providers/models.ts"],"sourcesContent":["export type ModelRole = \"primary\" | \"fallback\" | \"last_resort\";\nexport type ModelKind = \"embedding\" | \"llm\";\n\nexport type ModelDefinition = {\n id: string;\n role: ModelRole;\n kind: ModelKind;\n dimensions?: number;\n /** Actual deployment revision metadata; this does not pin Hugging Face requests. */\n revision?: string;\n schema?: string;\n contextWindow?: number;\n dailyCallBudget?: number;\n supportsBatch?: boolean;\n /**\n * Cosine at or above which a memory counts as semantically relevant to a\n * task on its own (without a shared word or path). Calibrated per model by\n * `npm run eval:semantic`; cosines are not comparable across models.\n */\n relevanceFloor?: number;\n};\n\nexport const EMBEDDING_DIMENSIONS = 384;\n\n/**\n * Default local embedder (ONNX via transformers.js, no network after the first\n * download): ModernBERT-based, 384-d, 8k context, trained on code retrieval.\n * The revision is a pinned commit so the embedding space never drifts.\n */\nexport const LOCAL_EMBEDDING_MODEL = {\n id: \"onnx-community/granite-embedding-small-english-r2-ONNX\",\n role: \"primary\",\n kind: \"embedding\",\n dimensions: EMBEDDING_DIMENSIONS,\n revision: \"1dc7835ba0cb9c76a3618d0bf0c427c97671b3c8\",\n schema: \"transformers.js@4-q8-cls-l2\",\n supportsBatch: true,\n relevanceFloor: 0.84,\n} satisfies ModelDefinition;\n\n/**\n * Cross-encoder rerankers per `rerank.provider` (off by default: on\n * `npm run eval:semantic` none beat granite's dense order). The local default\n * was the best small one measured (13/20 first results, ~20 ms per prompt).\n */\nexport const DEFAULT_RERANK_MODELS = {\n local: {\n id: \"mixedbread-ai/mxbai-rerank-xsmall-v1\",\n revision: \"b5c6e9da73abc3711f593f705371cdbe9e0fe422\",\n },\n huggingface: { id: \"BAAI/bge-reranker-v2-m3\" },\n openrouter: { id: \"cohere/rerank-v3.5\" },\n} as const;\n\n/** Default hosted embedders; each must return 384-d vectors. */\nexport const DEFAULT_CLOUD_EMBEDDING_MODELS = {\n huggingface: \"sentence-transformers/all-MiniLM-L6-v2\",\n openrouter: \"openai/text-embedding-3-small\",\n} as const;\n\nexport const DEFAULT_EMBEDDING_MODELS = [\n {\n id: \"sentence-transformers/all-MiniLM-L6-v2\",\n role: \"primary\",\n kind: \"embedding\",\n dimensions: EMBEDDING_DIMENSIONS,\n dailyCallBudget: 1_000,\n supportsBatch: true,\n relevanceFloor: 0.42,\n },\n {\n id: \"BAAI/bge-small-en-v1.5\",\n role: \"fallback\",\n kind: \"embedding\",\n dimensions: EMBEDDING_DIMENSIONS,\n dailyCallBudget: 1_000,\n supportsBatch: true,\n relevanceFloor: 0.69,\n },\n] satisfies ModelDefinition[];\n\nexport const DEFAULT_LLM_MODELS = [\n {\n id: \"meta-llama/Llama-3.2-3B-Instruct\",\n role: \"primary\",\n kind: \"llm\",\n contextWindow: 131_072,\n dailyCallBudget: 300,\n },\n {\n id: \"Qwen/Qwen2.5-7B-Instruct\",\n role: \"fallback\",\n kind: \"llm\",\n contextWindow: 32_768,\n dailyCallBudget: 300,\n },\n {\n id: \"mistralai/Mistral-7B-Instruct-v0.3\",\n role: \"last_resort\",\n kind: \"llm\",\n contextWindow: 32_768,\n dailyCallBudget: 300,\n },\n] satisfies ModelDefinition[];\n\nexport const MODEL_REGISTRY: ModelDefinition[] = [\n LOCAL_EMBEDDING_MODEL,\n ...DEFAULT_EMBEDDING_MODELS,\n ...DEFAULT_LLM_MODELS,\n];\n\nexport function getModelDefinition(modelId: string): ModelDefinition | undefined {\n return MODEL_REGISTRY.find((model) => model.id === modelId);\n}\n\nexport function getModelContextWindow(modelId: string): number | undefined {\n return getModelDefinition(modelId)?.contextWindow;\n}\n\nexport function assertCompatibleEmbeddingModels(models: ModelDefinition[]): void {\n const mismatchedModel = models.find((model) => model.dimensions !== EMBEDDING_DIMENSIONS);\n\n if (mismatchedModel) {\n throw new Error(\n `Embedding model ${mismatchedModel.id} has ${mismatchedModel.dimensions ?? \"unknown\"} dimensions; expected ${EMBEDDING_DIMENSIONS}.`,\n );\n }\n}\n"],"mappings":";AAsBO,IAAM,uBAAuB;AAO7B,IAAM,wBAAwB;AAAA,EACnC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,gBAAgB;AAClB;AAOO,IAAM,wBAAwB;AAAA,EACnC,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,aAAa,EAAE,IAAI,0BAA0B;AAAA,EAC7C,YAAY,EAAE,IAAI,qBAAqB;AACzC;AAGO,IAAM,iCAAiC;AAAA,EAC5C,aAAa;AAAA,EACb,YAAY;AACd;AAEO,IAAM,2BAA2B;AAAA,EACtC;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,IACf,iBAAiB;AAAA,EACnB;AACF;AAEO,IAAM,iBAAoC;AAAA,EAC/C;AAAA,EACA,GAAG;AAAA,EACH,GAAG;AACL;AAEO,SAAS,mBAAmB,SAA8C;AAC/E,SAAO,eAAe,KAAK,CAAC,UAAU,MAAM,OAAO,OAAO;AAC5D;AAEO,SAAS,sBAAsB,SAAqC;AACzE,SAAO,mBAAmB,OAAO,GAAG;AACtC;AAEO,SAAS,gCAAgC,QAAiC;AAC/E,QAAM,kBAAkB,OAAO,KAAK,CAAC,UAAU,MAAM,eAAe,oBAAoB;AAExF,MAAI,iBAAiB;AACnB,UAAM,IAAI;AAAA,MACR,mBAAmB,gBAAgB,EAAE,QAAQ,gBAAgB,cAAc,SAAS,yBAAyB,oBAAoB;AAAA,IACnI;AAAA,EACF;AACF;","names":[]}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
detectTestCommand,
|
|
9
9
|
estimateTokens,
|
|
10
10
|
findCoveringTest
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-SYWJG5NA.js";
|
|
12
12
|
import {
|
|
13
13
|
NON_SOURCE_PATH,
|
|
14
14
|
discoverTaskPaths,
|
|
@@ -172,4 +172,4 @@ export {
|
|
|
172
172
|
renderLeanBlock,
|
|
173
173
|
runLeanHookCommand
|
|
174
174
|
};
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
175
|
+
//# sourceMappingURL=chunk-N34XHWBA.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
countTokens,
|
|
3
3
|
generateEntityId
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XBJQKCLU.js";
|
|
5
5
|
import {
|
|
6
6
|
writeAtomic
|
|
7
7
|
} from "./chunk-776EQXDV.js";
|
|
@@ -316,4 +316,4 @@ export {
|
|
|
316
316
|
findCoveringTest,
|
|
317
317
|
detectTestCommand
|
|
318
318
|
};
|
|
319
|
-
//# sourceMappingURL=chunk-
|
|
319
|
+
//# sourceMappingURL=chunk-SYWJG5NA.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LOCAL_EMBEDDING_MODEL
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JPHJBCZB.js";
|
|
4
4
|
|
|
5
5
|
// src/providers/local.ts
|
|
6
6
|
import { homedir } from "os";
|
|
@@ -88,4 +88,4 @@ export {
|
|
|
88
88
|
LocalModelProvider,
|
|
89
89
|
rerankLocally
|
|
90
90
|
};
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-U4HAJLIB.js.map
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
countTokens,
|
|
10
10
|
generateEntityId,
|
|
11
11
|
generateSessionId
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-XBJQKCLU.js";
|
|
13
13
|
import {
|
|
14
14
|
OpenRouterEmbeddingProvider
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JFDRBPYF.js";
|
|
16
16
|
import {
|
|
17
17
|
LocalModelProvider
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-U4HAJLIB.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_CLOUD_EMBEDDING_MODELS,
|
|
21
21
|
DEFAULT_EMBEDDING_MODELS,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
EMBEDDING_DIMENSIONS,
|
|
24
24
|
assertCompatibleEmbeddingModels,
|
|
25
25
|
getModelDefinition
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-JPHJBCZB.js";
|
|
27
27
|
import {
|
|
28
28
|
MISSING_DATABASE_URL,
|
|
29
29
|
assertNoSymlinkBetween,
|
|
@@ -549,6 +549,32 @@ function lexicalTerms(query) {
|
|
|
549
549
|
)
|
|
550
550
|
].filter((term) => !QUERY_STOPWORDS.has(term)).slice(0, 32).map((term) => term.slice(0, 64));
|
|
551
551
|
}
|
|
552
|
+
var CLAIM_BOILERPLATE = /* @__PURE__ */ new Set([
|
|
553
|
+
"decided",
|
|
554
|
+
"decide",
|
|
555
|
+
"decision",
|
|
556
|
+
"made",
|
|
557
|
+
"use",
|
|
558
|
+
"uses",
|
|
559
|
+
"used",
|
|
560
|
+
"using",
|
|
561
|
+
"now",
|
|
562
|
+
"going",
|
|
563
|
+
"will"
|
|
564
|
+
]);
|
|
565
|
+
function termOverlap(a, b) {
|
|
566
|
+
const terms = (text2) => new Set(
|
|
567
|
+
(text2.toLowerCase().match(/[\p{L}\p{N}_]+/gu) ?? []).filter(
|
|
568
|
+
(term) => !QUERY_STOPWORDS.has(term) && !CLAIM_BOILERPLATE.has(term)
|
|
569
|
+
)
|
|
570
|
+
);
|
|
571
|
+
const left = terms(a);
|
|
572
|
+
const right = terms(b);
|
|
573
|
+
if (left.size === 0 || right.size === 0) return 0;
|
|
574
|
+
let shared = 0;
|
|
575
|
+
for (const term of left) if (right.has(term)) shared += 1;
|
|
576
|
+
return shared / (left.size + right.size - shared);
|
|
577
|
+
}
|
|
552
578
|
|
|
553
579
|
// src/providers/embedding-space.ts
|
|
554
580
|
function embeddingSpace(response) {
|
|
@@ -3979,6 +4005,7 @@ async function checkModels(provider, skip = false) {
|
|
|
3979
4005
|
export {
|
|
3980
4006
|
isEligibleMemory,
|
|
3981
4007
|
lexicalTerms,
|
|
4008
|
+
termOverlap,
|
|
3982
4009
|
embeddingSpaceKey,
|
|
3983
4010
|
DefaultPolicy,
|
|
3984
4011
|
HuggingFaceProvider,
|
|
@@ -4003,4 +4030,4 @@ export {
|
|
|
4003
4030
|
inspectNamespace,
|
|
4004
4031
|
runDoctor
|
|
4005
4032
|
};
|
|
4006
|
-
//# sourceMappingURL=chunk-
|
|
4033
|
+
//# sourceMappingURL=chunk-UN57FKQX.js.map
|