@backendkit-labs/agent-enterprise 0.2.0 → 0.3.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 +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/rag/SimpleEmbedder.d.ts +23 -0
- package/dist/rag/SimpleEmbedder.d.ts.map +1 -0
- package/dist/rag/SimpleEmbedder.js +65 -0
- package/dist/rag/SimpleEmbedder.js.map +1 -0
- package/package.json +35 -35
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @backendkit-labs/agent-enterprise
|
|
2
2
|
|
|
3
|
+
**Status: core** — RAG and VaultWriter are required for the enterprise story; changes go through full review.
|
|
4
|
+
|
|
3
5
|
Enterprise knowledge layer for the BackendKit Agent Framework — local RAG over Obsidian vaults, shared knowledge vault with agent write-back, and pluggable embedders.
|
|
4
6
|
|
|
5
7
|
```bash
|
package/dist/index.d.ts
CHANGED
|
@@ -8,4 +8,5 @@ export { VaultIndexer } from './rag/VaultIndexer';
|
|
|
8
8
|
export type { IndexerOptions, RawChunk } from './rag/VaultIndexer';
|
|
9
9
|
export { VaultWriter } from './rag/VaultWriter';
|
|
10
10
|
export type { VaultWriterOptions, WriteNoteParams } from './rag/VaultWriter';
|
|
11
|
+
export { SimpleEmbedder } from './rag/SimpleEmbedder';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC7G,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC7G,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VaultWriter = exports.VaultIndexer = exports.VectorStore = exports.OLLAMA_EMBED_DEFAULT_MODEL = exports.OLLAMA_EMBED_DEFAULT_HOST = exports.OllamaEmbedder = exports.ObsidianRAGProvider = void 0;
|
|
3
|
+
exports.SimpleEmbedder = exports.VaultWriter = exports.VaultIndexer = exports.VectorStore = exports.OLLAMA_EMBED_DEFAULT_MODEL = exports.OLLAMA_EMBED_DEFAULT_HOST = exports.OllamaEmbedder = exports.ObsidianRAGProvider = void 0;
|
|
4
4
|
var ObsidianRAGProvider_1 = require("./rag/ObsidianRAGProvider");
|
|
5
5
|
Object.defineProperty(exports, "ObsidianRAGProvider", { enumerable: true, get: function () { return ObsidianRAGProvider_1.ObsidianRAGProvider; } });
|
|
6
6
|
var OllamaEmbedder_1 = require("./rag/OllamaEmbedder");
|
|
@@ -13,4 +13,6 @@ var VaultIndexer_1 = require("./rag/VaultIndexer");
|
|
|
13
13
|
Object.defineProperty(exports, "VaultIndexer", { enumerable: true, get: function () { return VaultIndexer_1.VaultIndexer; } });
|
|
14
14
|
var VaultWriter_1 = require("./rag/VaultWriter");
|
|
15
15
|
Object.defineProperty(exports, "VaultWriter", { enumerable: true, get: function () { return VaultWriter_1.VaultWriter; } });
|
|
16
|
+
var SimpleEmbedder_1 = require("./rag/SimpleEmbedder");
|
|
17
|
+
Object.defineProperty(exports, "SimpleEmbedder", { enumerable: true, get: function () { return SimpleEmbedder_1.SimpleEmbedder; } });
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAAvD,0HAAA,mBAAmB,OAAA;AAG5B,uDAA6G;AAApG,gHAAA,cAAc,OAAA;AAAE,2HAAA,yBAAyB,OAAA;AAAE,4HAAA,0BAA0B,OAAA;AAG9E,iDAAgD;AAAvC,0GAAA,WAAW,OAAA;AAGpB,mDAAkD;AAAzC,4GAAA,YAAY,OAAA;AAGrB,iDAAgD;AAAvC,0GAAA,WAAW,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAAvD,0HAAA,mBAAmB,OAAA;AAG5B,uDAA6G;AAApG,gHAAA,cAAc,OAAA;AAAE,2HAAA,yBAAyB,OAAA;AAAE,4HAAA,0BAA0B,OAAA;AAG9E,iDAAgD;AAAvC,0GAAA,WAAW,OAAA;AAGpB,mDAAkD;AAAzC,4GAAA,YAAY,OAAA;AAGrB,iDAAgD;AAAvC,0GAAA,WAAW,OAAA;AAGpB,uDAAsD;AAA7C,gHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SimpleEmbedder — local TF-IDF with feature hashing, no external dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Produces 256-dimensional unit vectors by:
|
|
5
|
+
* 1. Tokenising text into lowercase alphanumeric tokens
|
|
6
|
+
* 2. Mapping each token to a bucket via djb2 hash % DIMS
|
|
7
|
+
* 3. Accumulating term-frequency counts in the bucket
|
|
8
|
+
* 4. L2-normalising to a unit vector
|
|
9
|
+
*
|
|
10
|
+
* Not semantically equivalent to transformer embeddings, but clusters texts
|
|
11
|
+
* with shared vocabulary close together — sufficient to find notes whose
|
|
12
|
+
* content matches the query's key terms.
|
|
13
|
+
*
|
|
14
|
+
* Use this when Ollama is not available (dev, CI, pilot). For production,
|
|
15
|
+
* prefer OllamaEmbedder with nomic-embed-text for semantic accuracy.
|
|
16
|
+
*/
|
|
17
|
+
import type { Embedder } from './ObsidianRAGProvider';
|
|
18
|
+
export declare class SimpleEmbedder implements Embedder {
|
|
19
|
+
readonly model = "simple-tfidf-256";
|
|
20
|
+
embed(texts: string[]): Promise<number[][]>;
|
|
21
|
+
embedOne(text: string): Promise<number[]>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SimpleEmbedder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleEmbedder.d.ts","sourceRoot":"","sources":["../../src/rag/SimpleEmbedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAyCtD,qBAAa,cAAe,YAAW,QAAQ;IAC3C,QAAQ,CAAC,KAAK,sBAAsB;IAE9B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAI3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGlD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SimpleEmbedder — local TF-IDF with feature hashing, no external dependencies.
|
|
4
|
+
*
|
|
5
|
+
* Produces 256-dimensional unit vectors by:
|
|
6
|
+
* 1. Tokenising text into lowercase alphanumeric tokens
|
|
7
|
+
* 2. Mapping each token to a bucket via djb2 hash % DIMS
|
|
8
|
+
* 3. Accumulating term-frequency counts in the bucket
|
|
9
|
+
* 4. L2-normalising to a unit vector
|
|
10
|
+
*
|
|
11
|
+
* Not semantically equivalent to transformer embeddings, but clusters texts
|
|
12
|
+
* with shared vocabulary close together — sufficient to find notes whose
|
|
13
|
+
* content matches the query's key terms.
|
|
14
|
+
*
|
|
15
|
+
* Use this when Ollama is not available (dev, CI, pilot). For production,
|
|
16
|
+
* prefer OllamaEmbedder with nomic-embed-text for semantic accuracy.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.SimpleEmbedder = void 0;
|
|
20
|
+
const DIMS = 256;
|
|
21
|
+
function djb2(str) {
|
|
22
|
+
let h = 5381;
|
|
23
|
+
for (let i = 0; i < str.length; i++) {
|
|
24
|
+
h = Math.imul((h << 5) + h, 1) + str.charCodeAt(i);
|
|
25
|
+
}
|
|
26
|
+
return Math.abs(h);
|
|
27
|
+
}
|
|
28
|
+
function tokenise(text) {
|
|
29
|
+
return text
|
|
30
|
+
.toLowerCase()
|
|
31
|
+
.normalize('NFD')
|
|
32
|
+
.replace(/[̀-ͯ]/g, '') // strip diacritics
|
|
33
|
+
.split(/[^a-z0-9]+/)
|
|
34
|
+
.filter(t => t.length > 2); // skip 1-2 char noise tokens
|
|
35
|
+
}
|
|
36
|
+
function vectorise(text) {
|
|
37
|
+
const vec = new Array(DIMS).fill(0);
|
|
38
|
+
const tokens = tokenise(text);
|
|
39
|
+
if (tokens.length === 0)
|
|
40
|
+
return vec;
|
|
41
|
+
for (const t of tokens) {
|
|
42
|
+
vec[djb2(t) % DIMS] += 1;
|
|
43
|
+
}
|
|
44
|
+
// L2 normalise
|
|
45
|
+
let norm = 0;
|
|
46
|
+
for (const v of vec)
|
|
47
|
+
norm += v * v;
|
|
48
|
+
norm = Math.sqrt(norm);
|
|
49
|
+
if (norm > 0) {
|
|
50
|
+
for (let i = 0; i < DIMS; i++)
|
|
51
|
+
vec[i] /= norm;
|
|
52
|
+
}
|
|
53
|
+
return vec;
|
|
54
|
+
}
|
|
55
|
+
class SimpleEmbedder {
|
|
56
|
+
model = 'simple-tfidf-256';
|
|
57
|
+
async embed(texts) {
|
|
58
|
+
return texts.map(vectorise);
|
|
59
|
+
}
|
|
60
|
+
async embedOne(text) {
|
|
61
|
+
return vectorise(text);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SimpleEmbedder = SimpleEmbedder;
|
|
65
|
+
//# sourceMappingURL=SimpleEmbedder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleEmbedder.js","sourceRoot":"","sources":["../../src/rag/SimpleEmbedder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAIH,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,SAAS,IAAI,CAAC,GAAW;IACrB,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC1B,OAAO,IAAI;SACN,WAAW,EAAE;SACb,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAG,mBAAmB;SAC3C,KAAK,CAAC,YAAY,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAS,6BAA6B;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,eAAe;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAa,cAAc;IACd,KAAK,GAAG,kBAAkB,CAAC;IAEpC,KAAK,CAAC,KAAK,CAAC,KAAe;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACvB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACJ;AAVD,wCAUC"}
|
package/package.json
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@backendkit-labs/agent-enterprise",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Business agents with local LLM and RAG knowledge base for agent-core",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"dist/",
|
|
9
|
-
"README.md"
|
|
10
|
-
],
|
|
11
|
-
"scripts": {
|
|
12
|
-
"build": "tsc",
|
|
13
|
-
"dev": "tsc --watch",
|
|
14
|
-
"typecheck": "tsc --noEmit",
|
|
15
|
-
"test": "jest",
|
|
16
|
-
"prepublishOnly": "npm run build"
|
|
17
|
-
},
|
|
18
|
-
"dependencies": {
|
|
19
|
-
"@backendkit-labs/agent-core": "*",
|
|
20
|
-
"yaml": "^2.4.0"
|
|
21
|
-
},
|
|
22
|
-
"devDependencies": {
|
|
23
|
-
"@types/node": "^20.0.0",
|
|
24
|
-
"@types/jest": "^29.0.0",
|
|
25
|
-
"jest": "^29.0.0",
|
|
26
|
-
"ts-jest": "^29.0.0",
|
|
27
|
-
"typescript": "^5.4.0"
|
|
28
|
-
},
|
|
29
|
-
"engines": {
|
|
30
|
-
"node": ">=20.0.0"
|
|
31
|
-
},
|
|
32
|
-
"publishConfig": {
|
|
33
|
-
"access": "public"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@backendkit-labs/agent-enterprise",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Business agents with local LLM and RAG knowledge base for agent-core",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"typecheck": "tsc --noEmit",
|
|
15
|
+
"test": "jest",
|
|
16
|
+
"prepublishOnly": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@backendkit-labs/agent-core": "*",
|
|
20
|
+
"yaml": "^2.4.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "^20.0.0",
|
|
24
|
+
"@types/jest": "^29.0.0",
|
|
25
|
+
"jest": "^29.0.0",
|
|
26
|
+
"ts-jest": "^29.0.0",
|
|
27
|
+
"typescript": "^5.4.0"
|
|
28
|
+
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=20.0.0"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
}
|
|
35
|
+
}
|