@dikolab/kbdb 0.4.3 → 0.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/CLA.md +68 -0
- package/LICENSE +676 -12
- package/LICENSING.md +58 -0
- package/README.md +50 -27
- package/README.md.bak +320 -0
- package/dist/README.md +320 -0
- package/dist/{chunk-BJXEVALU.mjs → chunk-QLJ33C74.mjs} +44 -44
- package/dist/chunk-QLJ33C74.mjs.map +7 -0
- package/dist/cli.cjs +550 -232
- package/dist/cli.cjs.map +4 -4
- package/dist/cli.d.ts +0 -8
- package/dist/cli.mjs +483 -154
- package/dist/cli.mjs.map +4 -4
- package/dist/kbdb-worker.cjs +36 -5
- package/dist/kbdb-worker.cjs.map +3 -3
- package/dist/mod.cjs +89 -30
- package/dist/mod.cjs.map +4 -4
- package/dist/mod.mjs +88 -30
- package/dist/mod.mjs.map +4 -4
- package/dist/src/cli.d.ts +0 -8
- package/dist/src/shared/cli/constants/defaults.constant.d.ts +1 -1
- package/dist/src/shared/cli/constants/recfile-command-field-map.constant.d.ts +8 -0
- package/dist/src/shared/cli/constants/recfile-field-maps.constant.d.ts +21 -0
- package/dist/src/shared/cli/functions/compute-directory-level.function.d.ts +14 -0
- package/dist/src/shared/cli/functions/dispatch-command.function.d.ts +2 -28
- package/dist/src/shared/cli/functions/format-command-output.function.d.ts +14 -0
- package/dist/src/shared/cli/functions/format-db-not-found.function.d.ts +20 -0
- package/dist/src/shared/cli/functions/format-output.function.d.ts +1 -0
- package/dist/src/shared/cli/functions/format-recfile-output.function.d.ts +11 -0
- package/dist/src/shared/cli/functions/render-recfile-value.function.d.ts +11 -0
- package/dist/src/shared/cli/functions/resolve-db-dir.function.d.ts +24 -0
- package/dist/src/shared/cli/functions/resolve-recfile-key.function.d.ts +9 -0
- package/dist/src/shared/cli/functions/run-db-path.function.d.ts +10 -0
- package/dist/src/shared/cli/functions/run-export.function.d.ts +8 -4
- package/dist/src/shared/cli/functions/run-import.function.d.ts +4 -0
- package/dist/src/shared/cli/functions/run-learn.function.d.ts +12 -0
- package/dist/src/shared/cli/index.d.ts +4 -1
- package/dist/src/shared/cli/typings/cli-options.interface.d.ts +9 -2
- package/dist/src/shared/cli/typings/db-resolution.interface.d.ts +9 -0
- package/dist/src/shared/cli/typings/recfile-field-map.type.d.ts +10 -0
- package/dist/src/shared/version/constants/version.constant.d.ts +1 -1
- package/dist/src/shared/wasm-codec/functions/decode-option-u8.function.d.ts +9 -0
- package/dist/src/shared/wasm-codec/functions/decode-section-records.function.d.ts +4 -0
- package/dist/src/shared/wasm-codec/functions/encode-add-section-params.function.d.ts +2 -45
- package/dist/src/shared/wasm-codec/functions/encode-update-section-params.function.d.ts +10 -1
- package/dist/src/shared/wasm-codec/index.d.ts +1 -1
- package/dist/src/shared/wasm-codec/typings/add-section-input.model.d.ts +6 -0
- package/dist/src/shared/wasm-codec/typings/section-record-trailing.model.d.ts +5 -0
- package/dist/src/shared/wasm-codec/typings/section-record.model.d.ts +5 -0
- package/dist/src/shared/worker-client/functions/build-deno-permissions.function.d.ts +11 -0
- package/dist/src/shared/worker-client/functions/read-crash-reason.function.d.ts +9 -0
- package/dist/src/shared/worker-client/functions/resolve-spawn-script.function.d.ts +6 -0
- package/dist/src/shared/worker-client/functions/spawn-daemon.function.d.ts +1 -1
- package/dist/src/shared/worker-client/typings/section.model.d.ts +5 -0
- package/dist/src/shared/worker-client/typings/worker-client-options.interface.d.ts +0 -6
- package/dist/src/shared/worker-daemon/functions/count-files.function.d.ts +12 -0
- package/dist/src/shared/worker-daemon/functions/handle-import.function.d.ts +2 -0
- package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +8 -0
- package/dist/src/shared/worker-daemon/functions/validate-daemon-path.function.d.ts +15 -0
- package/dist/src/worker.d.ts +0 -7
- package/dist/wasm/default-embedding/kbdb_default_embedding_bg.wasm +0 -0
- package/dist/wasm/default-embedding/package.json +1 -1
- package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/dist/wasm/fs-database/package.json +1 -1
- package/dist/wasm/fs-migration/kbdb_fs_migration_bg.wasm +0 -0
- package/dist/wasm/fs-migration/package.json +1 -1
- package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
- package/dist/wasm/kb-worker/package.json +1 -1
- package/dist/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
- package/dist/wasm/query-parser/package.json +1 -1
- package/dist/worker.d.ts +0 -7
- package/dist/worker.mjs +37 -6
- package/dist/worker.mjs.map +3 -3
- package/package.json +13 -12
- package/dist/chunk-BJXEVALU.mjs.map +0 -7
- package/dist/src/shared/cli/functions/resolve-raw-db-path.function.d.ts +0 -10
- package/docs/details/README.md +0 -30
- package/docs/details/agent-tooling.md +0 -132
- package/docs/details/cli.md +0 -777
- package/docs/details/knowledge-base.md +0 -180
- package/docs/details/library-api.md +0 -495
- package/docs/details/mcp-server.md +0 -482
- package/docs/details/search-and-ranking.md +0 -575
- package/docs/details/storage.md +0 -531
- package/docs/goals/agents.md +0 -751
- package/docs/goals/architecture.svg +0 -198
- package/docs/goals/auto-capture.md +0 -378
- package/docs/goals/benchmarking.md +0 -296
- package/docs/goals/cli.md +0 -2654
- package/docs/goals/concurrency.md +0 -259
- package/docs/goals/content-composer.md +0 -609
- package/docs/goals/content-parser.md +0 -279
- package/docs/goals/database.md +0 -1679
- package/docs/goals/document.md +0 -368
- package/docs/goals/hybrid-search.md +0 -465
- package/docs/goals/mcp.md +0 -1541
- package/docs/goals/overview.md +0 -124
- package/docs/goals/query-parser.md +0 -373
- package/docs/goals/query-result.md +0 -860
- package/docs/goals/semantic-dedup.md +0 -233
- package/docs/goals/skills.md +0 -810
- package/docs/goals/sync.md +0 -217
- package/docs/goals/worker-client.md +0 -1005
- package/docs/goals/worker-daemon.md +0 -1547
- package/docs/modules/overview.md +0 -319
- package/docs/modules/rust/embedding/module.md +0 -91
- package/docs/modules/rust/fs-database/functions/document.md +0 -48
- package/docs/modules/rust/fs-database/functions/integrity.md +0 -79
- package/docs/modules/rust/fs-database/functions/io.md +0 -87
- package/docs/modules/rust/fs-database/functions/module.md +0 -22
- package/docs/modules/rust/fs-database/functions/query-exec.md +0 -44
- package/docs/modules/rust/fs-database/functions/section.md +0 -76
- package/docs/modules/rust/fs-database/indexes/btree.md +0 -35
- package/docs/modules/rust/fs-database/indexes/corpus.md +0 -61
- package/docs/modules/rust/fs-database/indexes/inverted.md +0 -60
- package/docs/modules/rust/fs-database/indexes/module.md +0 -64
- package/docs/modules/rust/fs-database/indexes/positional.md +0 -39
- package/docs/modules/rust/fs-database/indexes/vectors.md +0 -110
- package/docs/modules/rust/fs-database/module.md +0 -150
- package/docs/modules/rust/fs-database/types/catalog.md +0 -53
- package/docs/modules/rust/fs-database/types/module.md +0 -12
- package/docs/modules/rust/fs-database/types/section.md +0 -127
- package/docs/modules/rust/kb-worker/functions/compose.md +0 -57
- package/docs/modules/rust/kb-worker/functions/module.md +0 -20
- package/docs/modules/rust/kb-worker/functions/retrieve.md +0 -194
- package/docs/modules/rust/kb-worker/functions/search.md +0 -173
- package/docs/modules/rust/kb-worker/functions/write.md +0 -172
- package/docs/modules/rust/kb-worker/module.md +0 -171
- package/docs/modules/rust/kb-worker/types/cache.md +0 -90
- package/docs/modules/rust/kb-worker/types/context.md +0 -26
- package/docs/modules/rust/kb-worker/types/module.md +0 -16
- package/docs/modules/rust/kb-worker/types/status.md +0 -29
- package/docs/modules/rust/kb-worker/types/token.md +0 -50
- package/docs/modules/rust/overview.md +0 -531
- package/docs/modules/rust/query-parser/functions/extract.md +0 -56
- package/docs/modules/rust/query-parser/functions/module.md +0 -18
- package/docs/modules/rust/query-parser/functions/parse.md +0 -33
- package/docs/modules/rust/query-parser/functions/pipeline.md +0 -9
- package/docs/modules/rust/query-parser/functions/rank.md +0 -85
- package/docs/modules/rust/query-parser/module.md +0 -131
- package/docs/modules/rust/query-parser/types/cache.md +0 -39
- package/docs/modules/rust/query-parser/types/keyphrase.md +0 -71
- package/docs/modules/rust/query-parser/types/module.md +0 -18
- package/docs/modules/rust/query-parser/types/token.md +0 -46
- package/docs/modules/rust/shared/content-composer/functions.md +0 -114
- package/docs/modules/rust/shared/content-composer/module.md +0 -147
- package/docs/modules/rust/shared/content-composer/types.md +0 -93
- package/docs/modules/rust/shared/content-parser/functions.md +0 -72
- package/docs/modules/rust/shared/content-parser/module.md +0 -99
- package/docs/modules/rust/shared/content-parser/types.md +0 -71
- package/docs/modules/rust/shared/corpus/module.md +0 -24
- package/docs/modules/rust/shared/corpus/types.md +0 -141
- package/docs/modules/rust/shared/document/module.md +0 -25
- package/docs/modules/rust/shared/document/types.md +0 -154
- package/docs/modules/rust/shared/encode/module.md +0 -22
- package/docs/modules/rust/shared/encode/traits.md +0 -304
- package/docs/modules/rust/shared/error/module.md +0 -28
- package/docs/modules/rust/shared/error/types.md +0 -302
- package/docs/modules/rust/shared/kbid/module.md +0 -24
- package/docs/modules/rust/shared/kbid/types.md +0 -147
- package/docs/modules/rust/shared/memory/functions.md +0 -209
- package/docs/modules/rust/shared/memory/module.md +0 -24
- package/docs/modules/rust/shared/module.md +0 -196
- package/docs/modules/rust/shared/pipeline/functions.md +0 -141
- package/docs/modules/rust/shared/pipeline/module.md +0 -62
- package/docs/modules/rust/shared/pipeline/types.md +0 -43
- package/docs/modules/rust/shared/query/module.md +0 -27
- package/docs/modules/rust/shared/query/types.md +0 -236
- package/docs/modules/rust/shared/section/module.md +0 -25
- package/docs/modules/rust/shared/section/types.md +0 -294
- package/docs/modules/rust/shared/term/module.md +0 -25
- package/docs/modules/rust/shared/term/types.md +0 -139
- package/docs/modules/typescript/cli.md +0 -131
- package/docs/modules/typescript/kbdb-worker.md +0 -150
- package/docs/modules/typescript/overview.md +0 -400
- package/docs/modules/typescript/shared/auto-capture/module.md +0 -73
- package/docs/modules/typescript/shared/cli/constants.md +0 -23
- package/docs/modules/typescript/shared/cli/functions.md +0 -809
- package/docs/modules/typescript/shared/cli/module.md +0 -138
- package/docs/modules/typescript/shared/cli/typings.md +0 -197
- package/docs/modules/typescript/shared/embedding/functions.md +0 -200
- package/docs/modules/typescript/shared/embedding/module.md +0 -77
- package/docs/modules/typescript/shared/embedding/typings.md +0 -124
- package/docs/modules/typescript/shared/hash/functions.md +0 -20
- package/docs/modules/typescript/shared/hash/module.md +0 -21
- package/docs/modules/typescript/shared/log/constants.md +0 -82
- package/docs/modules/typescript/shared/log/functions.md +0 -131
- package/docs/modules/typescript/shared/log/module.md +0 -153
- package/docs/modules/typescript/shared/log/typings.md +0 -82
- package/docs/modules/typescript/shared/mcp/classes.md +0 -179
- package/docs/modules/typescript/shared/mcp/functions.md +0 -386
- package/docs/modules/typescript/shared/mcp/module.md +0 -160
- package/docs/modules/typescript/shared/mcp/typings.md +0 -529
- package/docs/modules/typescript/shared/module.md +0 -110
- package/docs/modules/typescript/shared/platform/functions.md +0 -42
- package/docs/modules/typescript/shared/platform/module.md +0 -25
- package/docs/modules/typescript/shared/runtime/functions.md +0 -26
- package/docs/modules/typescript/shared/runtime/module.md +0 -27
- package/docs/modules/typescript/shared/runtime/typings.md +0 -13
- package/docs/modules/typescript/shared/version/module.md +0 -27
- package/docs/modules/typescript/shared/wasm-codec/functions.md +0 -391
- package/docs/modules/typescript/shared/wasm-codec/module.md +0 -98
- package/docs/modules/typescript/shared/worker-client/classes.md +0 -264
- package/docs/modules/typescript/shared/worker-client/functions.md +0 -175
- package/docs/modules/typescript/shared/worker-client/module.md +0 -92
- package/docs/modules/typescript/shared/worker-client/typings.md +0 -511
- package/docs/modules/typescript/shared/worker-daemon/classes.md +0 -239
- package/docs/modules/typescript/shared/worker-daemon/constants.md +0 -37
- package/docs/modules/typescript/shared/worker-daemon/functions.md +0 -234
- package/docs/modules/typescript/shared/worker-daemon/module.md +0 -118
- package/docs/modules/typescript/shared/worker-daemon/typings.md +0 -132
- package/docs/overview.md +0 -191
- package/docs/release-notes/0.1.0.md +0 -189
- package/docs/release-notes/0.1.1.md +0 -46
- package/docs/release-notes/0.1.2.md +0 -38
- package/docs/release-notes/0.1.3.md +0 -42
- package/docs/release-notes/0.2.0.md +0 -147
- package/docs/release-notes/0.3.0.md +0 -89
- package/docs/release-notes/0.3.1.md +0 -121
- package/docs/release-notes/0.3.2.md +0 -64
- package/docs/release-notes/0.4.0.md +0 -80
- package/docs/release-notes/0.4.1.md +0 -149
- package/docs/release-notes/0.4.3.md +0 -60
- package/docs/release-notes/README.md +0 -13
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
# Knowledge Base Guide
|
|
2
|
-
|
|
3
|
-
How to build, search, and maintain a knowledge base
|
|
4
|
-
with kbdb.
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
kbdb stores your documents in a plain `.kbdb` folder on
|
|
9
|
-
disk and makes them searchable. No external server
|
|
10
|
-
required -- just a directory you can back up, version
|
|
11
|
-
with git, or move between machines.
|
|
12
|
-
|
|
13
|
-
## Getting Started
|
|
14
|
-
|
|
15
|
-
**Create a knowledge base:**
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
kbdb db init --db ./my-project
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
**Feed it your docs:**
|
|
22
|
-
|
|
23
|
-
```sh
|
|
24
|
-
kbdb learn ./docs --db ./my-project
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
kbdb reads Markdown (`.md`) and plain text (`.txt`)
|
|
28
|
-
files.
|
|
29
|
-
It breaks them into sections, extracts keywords, and
|
|
30
|
-
builds a search index.
|
|
31
|
-
|
|
32
|
-
**Search:**
|
|
33
|
-
|
|
34
|
-
```sh
|
|
35
|
-
kbdb search "how does auth work" --db ./my-project
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Results are ranked by relevance. Headings carry 2x
|
|
39
|
-
weight, so well-titled sections surface first.
|
|
40
|
-
|
|
41
|
-
## Importing Content
|
|
42
|
-
|
|
43
|
-
### File import
|
|
44
|
-
|
|
45
|
-
```sh
|
|
46
|
-
kbdb learn ./docs --db ./my-project
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Recursively imports all supported files. Each file is
|
|
50
|
-
split into sections by heading.
|
|
51
|
-
|
|
52
|
-
### Stdin import
|
|
53
|
-
|
|
54
|
-
```sh
|
|
55
|
-
echo "My note about auth." \
|
|
56
|
-
| kbdb learn - --title "Auth notes" --db ./my-project
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Tags and source tracking
|
|
60
|
-
|
|
61
|
-
```sh
|
|
62
|
-
kbdb learn ./docs --tags design,v2 --db ./my-project
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Tags scope content for filtering. Use `--replace` to
|
|
66
|
-
update existing sections from the same source instead
|
|
67
|
-
of creating duplicates.
|
|
68
|
-
|
|
69
|
-
## Search Modes
|
|
70
|
-
|
|
71
|
-
| Flag | Mode | Description |
|
|
72
|
-
|------|------|-------------|
|
|
73
|
-
| _(default)_ | lexical | Keyword matching with stemming |
|
|
74
|
-
| `--algo hybrid` | hybrid | Keyword + AI similarity |
|
|
75
|
-
| `--algo vector` | vector | AI similarity only |
|
|
76
|
-
|
|
77
|
-
Hybrid and vector modes work out of the box using a
|
|
78
|
-
built-in TF-IDF embedding provider. For higher
|
|
79
|
-
quality, configure an ONNX or API provider in
|
|
80
|
-
`worker.toml`. See the [CLI Reference](cli.md) for
|
|
81
|
-
provider configuration.
|
|
82
|
-
|
|
83
|
-
When a query returns no exact matches, kbdb
|
|
84
|
-
automatically loosens the search (OR instead of AND)
|
|
85
|
-
and flags results with `relaxed: true`.
|
|
86
|
-
|
|
87
|
-
## Reading Data
|
|
88
|
-
|
|
89
|
-
Three commands retrieve stored content at different
|
|
90
|
-
granularities:
|
|
91
|
-
|
|
92
|
-
| Command | Purpose |
|
|
93
|
-
|---------|---------|
|
|
94
|
-
| `search` | Find sections by query; ranked snippets |
|
|
95
|
-
| `recall` | Expand context around known kbids |
|
|
96
|
-
| `content` | Compose Markdown from kbid/docid lists |
|
|
97
|
-
|
|
98
|
-
**Recall depths:**
|
|
99
|
-
|
|
100
|
-
| Depth | Returns |
|
|
101
|
-
|-------|---------|
|
|
102
|
-
| 0 | Section content only |
|
|
103
|
-
| 1 | + parent documents, back-references |
|
|
104
|
-
| 2 | + siblings, forward references |
|
|
105
|
-
| 3 | + full text of referenced sections |
|
|
106
|
-
|
|
107
|
-
**kbid prefixes:** You don't need to paste full 26-char
|
|
108
|
-
identifiers. Short prefixes work (like git short
|
|
109
|
-
hashes) as long as they're unambiguous.
|
|
110
|
-
|
|
111
|
-
## Maintenance
|
|
112
|
-
|
|
113
|
-
```sh
|
|
114
|
-
kbdb check --db ./my-project # integrity check
|
|
115
|
-
kbdb gc --db ./my-project # remove stale data
|
|
116
|
-
kbdb rebuild --db ./my-project # rebuild all indexes
|
|
117
|
-
kbdb export --db ./my-project # portable snapshot
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Sync & Backup
|
|
121
|
-
|
|
122
|
-
The `.kbdb` directory is self-contained and portable.
|
|
123
|
-
|
|
124
|
-
**Git-based sync:**
|
|
125
|
-
|
|
126
|
-
```sh
|
|
127
|
-
cd .kbdb
|
|
128
|
-
git init && git add -A && git commit -m "snapshot"
|
|
129
|
-
git remote add origin <url> && git push
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
On another machine:
|
|
133
|
-
|
|
134
|
-
```sh
|
|
135
|
-
git clone <url> .kbdb
|
|
136
|
-
kbdb rebuild
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
The `.gitignore` inside `.kbdb` already excludes
|
|
140
|
-
binary indexes, so git only tracks raw section and
|
|
141
|
-
document files. After cloning, `rebuild` reconstructs
|
|
142
|
-
the indexes.
|
|
143
|
-
|
|
144
|
-
**Export/import:**
|
|
145
|
-
|
|
146
|
-
```sh
|
|
147
|
-
kbdb export --db ./project
|
|
148
|
-
# copy the export directory to another machine
|
|
149
|
-
kbdb db init --db ./project
|
|
150
|
-
# re-import sections from the export
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## Daemon Timeout and Retry
|
|
154
|
-
|
|
155
|
-
All commands that talk to the worker daemon support
|
|
156
|
-
two global flags:
|
|
157
|
-
|
|
158
|
-
| Flag | Default | Description |
|
|
159
|
-
|------|---------|-------------|
|
|
160
|
-
| `--timeout-ms <ms>` | `30000` | Per-request daemon timeout |
|
|
161
|
-
| `--retry <n>` | `1` | Retries with daemon respawn on timeout |
|
|
162
|
-
| `--non-interactive` | off | Suppress prompts; use defaults |
|
|
163
|
-
|
|
164
|
-
These can also be set via environment variables.
|
|
165
|
-
The flags take priority over env vars.
|
|
166
|
-
|
|
167
|
-
| Variable | Description |
|
|
168
|
-
|----------|-------------|
|
|
169
|
-
| `KBDB_DAEMON_TIMEOUT` | Per-request daemon timeout (ms) |
|
|
170
|
-
| `KBDB_RETRY` | Max retry count |
|
|
171
|
-
| `KBDB_LOG_LEVEL` | Log verbosity: `debug`, `info`, `warning`, `error` |
|
|
172
|
-
| `KBDB_NON_INTERACTIVE` | Suppress prompts (`1` or `true`) |
|
|
173
|
-
|
|
174
|
-
## Deep Dives
|
|
175
|
-
|
|
176
|
-
- [CLI Reference](cli.md) -- full command list
|
|
177
|
-
- [Search and Ranking](search-and-ranking.md) --
|
|
178
|
-
scoring, stemming, hybrid search internals
|
|
179
|
-
- [Storage Architecture](storage.md) -- file formats,
|
|
180
|
-
directory layout
|
|
@@ -1,495 +0,0 @@
|
|
|
1
|
-
# Library API Reference
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
kbdb can be used as a library in Node.js and Deno
|
|
6
|
-
projects. The main entry point is
|
|
7
|
-
`createWorkerClient()`, which connects to a
|
|
8
|
-
background worker daemon and returns a typed client
|
|
9
|
-
for all knowledge base operations.
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
npm install @dikolab/kbdb # Node.js
|
|
15
|
-
deno add @dikolab/kbdb # Deno
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Quick Start
|
|
19
|
-
|
|
20
|
-
```typescript
|
|
21
|
-
import { createWorkerClient } from '@dikolab/kbdb';
|
|
22
|
-
|
|
23
|
-
const client = await createWorkerClient({
|
|
24
|
-
contextPath: '/path/to/.kbdb',
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const results = await client.search({
|
|
28
|
-
query: 'authentication',
|
|
29
|
-
limit: 10,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
console.log(results);
|
|
33
|
-
client.disconnect();
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## API Reference
|
|
37
|
-
|
|
38
|
-
### Factory
|
|
39
|
-
|
|
40
|
-
#### `createWorkerClient(options?)`
|
|
41
|
-
|
|
42
|
-
Creates and connects a `WorkerClient` to the worker
|
|
43
|
-
daemon. Resolves the database path, discovers or
|
|
44
|
-
spawns the daemon, and returns a connected client.
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
function createWorkerClient(
|
|
48
|
-
options?: WorkerClientOptions,
|
|
49
|
-
): Promise<WorkerClient>;
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Parameters:**
|
|
53
|
-
|
|
54
|
-
| Name | Type | Description |
|
|
55
|
-
|------|------|-------------|
|
|
56
|
-
| `options.dbPath` | `string?` | Parent directory containing `.kbdb`. The client discovers `.kbdb` inside it. Defaults to `cwd()`. |
|
|
57
|
-
| `options.contextPath` | `string?` | Direct absolute path to the `.kbdb` directory itself. Skips discovery. |
|
|
58
|
-
| `options.autoSpawn` | `boolean?` | Auto-spawn daemon if not running. Default `true`. |
|
|
59
|
-
| `options.connectTimeoutMs` | `number?` | Max ms to wait for daemon. Default `10000`. |
|
|
60
|
-
| `options.requestTimeoutMs` | `number?` | Per-request timeout in milliseconds. Default `30000`. |
|
|
61
|
-
| `options.workerScript` | `string?` | Path to worker daemon script. |
|
|
62
|
-
|
|
63
|
-
#### `getOrCreateClient(options?)`
|
|
64
|
-
|
|
65
|
-
Returns a cached `WorkerClient`, creating one on
|
|
66
|
-
first call. Subsequent calls with the same
|
|
67
|
-
`contextPath` return the existing connected client.
|
|
68
|
-
Use this in long-lived processes to avoid spawning
|
|
69
|
-
multiple daemon connections.
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
function getOrCreateClient(
|
|
73
|
-
options?: WorkerClientOptions,
|
|
74
|
-
): Promise<WorkerClient>;
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
#### `clearClientCache()`
|
|
78
|
-
|
|
79
|
-
Disconnects and removes all cached clients created
|
|
80
|
-
by `getOrCreateClient`. Call during shutdown to
|
|
81
|
-
clean up connections.
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
84
|
-
function clearClientCache(): void;
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
### Search
|
|
90
|
-
|
|
91
|
-
#### `search(params)`
|
|
92
|
-
|
|
93
|
-
Queries the knowledge base and returns ranked
|
|
94
|
-
results.
|
|
95
|
-
|
|
96
|
-
```typescript
|
|
97
|
-
search(
|
|
98
|
-
params: SearchParams,
|
|
99
|
-
): Promise<PagedSearchResult>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
| Param | Type | Description |
|
|
103
|
-
|-------|------|-------------|
|
|
104
|
-
| `params.query` | `string` | Search query string. |
|
|
105
|
-
| `params.mode` | `'sections' \| 'documents' \| 'stats'?` | Entity type to return. Default `'sections'`. |
|
|
106
|
-
| `params.limit` | `number?` | Maximum results to return. |
|
|
107
|
-
| `params.offset` | `number?` | Zero-based result offset for pagination. |
|
|
108
|
-
| `params.algo` | `'lexical' \| 'vector' \| 'hybrid'?` | Search algorithm. Default `'lexical'`. |
|
|
109
|
-
| `params.relaxed` | `boolean?` | Use relaxed (OR) matching when strict returns no results. |
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
### Sections
|
|
114
|
-
|
|
115
|
-
#### `readSections(kbids)`
|
|
116
|
-
|
|
117
|
-
Fetches sections by their knowledge-base
|
|
118
|
-
identifiers.
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
readSections(kbids: string[]): Promise<Section[]>
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
#### `addSection(params)`
|
|
125
|
-
|
|
126
|
-
Imports content as a new section into the knowledge
|
|
127
|
-
base.
|
|
128
|
-
|
|
129
|
-
```typescript
|
|
130
|
-
addSection(
|
|
131
|
-
params: AddSectionParams,
|
|
132
|
-
): Promise<AddSectionResult>
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
| Param | Type | Description |
|
|
136
|
-
|-------|------|-------------|
|
|
137
|
-
| `params.sectionType` | `string` | Semantic type label for the section. |
|
|
138
|
-
| `params.content` | `string` | Raw text content. |
|
|
139
|
-
| `params.docid` | `string?` | Parent document to attach to. |
|
|
140
|
-
|
|
141
|
-
#### `updateSection(kbid, params)`
|
|
142
|
-
|
|
143
|
-
Replaces an existing section's content and metadata.
|
|
144
|
-
|
|
145
|
-
```typescript
|
|
146
|
-
updateSection(
|
|
147
|
-
kbid: string,
|
|
148
|
-
params: AddSectionParams,
|
|
149
|
-
): Promise<string>
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Returns the knowledge-base identifier of the
|
|
153
|
-
updated section.
|
|
154
|
-
|
|
155
|
-
#### `removeSection(kbid)`
|
|
156
|
-
|
|
157
|
-
Deletes a section from the knowledge base.
|
|
158
|
-
|
|
159
|
-
```typescript
|
|
160
|
-
removeSection(kbid: string): Promise<RemoveSectionResult>
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
#### `listByType(sectionType)`
|
|
164
|
-
|
|
165
|
-
Retrieves all sections matching the given type name.
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
listByType(sectionType: string): Promise<SectionRecord[]>
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
### Documents
|
|
174
|
-
|
|
175
|
-
#### `groupSections(title, kbids, docType?)`
|
|
176
|
-
|
|
177
|
-
Creates a document by grouping sections under a
|
|
178
|
-
title.
|
|
179
|
-
|
|
180
|
-
```typescript
|
|
181
|
-
groupSections(
|
|
182
|
-
title: string,
|
|
183
|
-
kbids: string[],
|
|
184
|
-
docType?: string,
|
|
185
|
-
): Promise<string>
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Returns the assigned document identifier.
|
|
189
|
-
|
|
190
|
-
#### `removeGrouping(docid)`
|
|
191
|
-
|
|
192
|
-
Removes a document grouping. The sections themselves
|
|
193
|
-
are not deleted.
|
|
194
|
-
|
|
195
|
-
```typescript
|
|
196
|
-
removeGrouping(docid: string): Promise<void>
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
#### `retrieveDocument(docid)`
|
|
200
|
-
|
|
201
|
-
Fetches a full document record including its
|
|
202
|
-
sections.
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
retrieveDocument(docid: string): Promise<unknown>
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
#### `listDocumentsByType(docType)`
|
|
209
|
-
|
|
210
|
-
Retrieves all documents matching the given type
|
|
211
|
-
name.
|
|
212
|
-
|
|
213
|
-
```typescript
|
|
214
|
-
listDocumentsByType(
|
|
215
|
-
docType: string,
|
|
216
|
-
): Promise<DocumentManifest[]>
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
|
|
221
|
-
### Recall
|
|
222
|
-
|
|
223
|
-
#### `recall(params)`
|
|
224
|
-
|
|
225
|
-
Retrieves full content and progressive context for
|
|
226
|
-
one or more sections. Use after `search()` to read
|
|
227
|
-
relevant results.
|
|
228
|
-
|
|
229
|
-
```typescript
|
|
230
|
-
recall(
|
|
231
|
-
params: RecallParams,
|
|
232
|
-
): Promise<RecallResult | RecallResult[]>
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
| Param | Type | Description |
|
|
236
|
-
|-------|------|-------------|
|
|
237
|
-
| `params.kbid` | `string?` | Single section identifier. |
|
|
238
|
-
| `params.kbids` | `string[]?` | Batch section identifiers. |
|
|
239
|
-
| `params.depth` | `number?` | Expansion depth (0--3). Default `0`. |
|
|
240
|
-
|
|
241
|
-
At least one of `kbid` or `kbids` is required.
|
|
242
|
-
Returns a single `RecallResult` for `kbid`, or an
|
|
243
|
-
array for `kbids`. Depth controls progressive
|
|
244
|
-
context expansion: 0 = section content, 1 = adds
|
|
245
|
-
parent documents and back-references, 2 = adds
|
|
246
|
-
siblings and forward references, 3 = adds full text
|
|
247
|
-
of referenced sections.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
### Content
|
|
252
|
-
|
|
253
|
-
#### `content(ids)`
|
|
254
|
-
|
|
255
|
-
Composes rendered Markdown from one or more kbid or
|
|
256
|
-
docid identifiers (may be mixed).
|
|
257
|
-
|
|
258
|
-
```typescript
|
|
259
|
-
content(ids: string[]): Promise<ContentResult>
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Returns a `ContentResult` with the composed Markdown
|
|
263
|
-
string and character count.
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
### Maintenance
|
|
268
|
-
|
|
269
|
-
#### `integrityCheck()`
|
|
270
|
-
|
|
271
|
-
Verifies database integrity and reports all issues
|
|
272
|
-
found.
|
|
273
|
-
|
|
274
|
-
```typescript
|
|
275
|
-
integrityCheck(): Promise<IntegrityCheckResult>
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
#### `gc()`
|
|
279
|
-
|
|
280
|
-
Garbage collects unreferenced sections from the
|
|
281
|
-
database.
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
gc(): Promise<GcResult>
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
#### `rebuildIndexes()`
|
|
288
|
-
|
|
289
|
-
Reconstructs all index files from section files and
|
|
290
|
-
document manifests on disk.
|
|
291
|
-
|
|
292
|
-
```typescript
|
|
293
|
-
rebuildIndexes(): Promise<RebuildResult>
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
#### `initDirectory(targetPath)`
|
|
297
|
-
|
|
298
|
-
Initialises a new `.kbdb` database directory at the
|
|
299
|
-
given path.
|
|
300
|
-
|
|
301
|
-
```typescript
|
|
302
|
-
initDirectory(targetPath: string): Promise<void>
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
#### `migrateDatabase(targetPath)`
|
|
306
|
-
|
|
307
|
-
Runs all pending database migrations for the
|
|
308
|
-
`.kbdb` directory at the given path.
|
|
309
|
-
|
|
310
|
-
```typescript
|
|
311
|
-
migrateDatabase(
|
|
312
|
-
targetPath: string,
|
|
313
|
-
): Promise<MigrateResult>
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
#### `checkVersion(targetPath)`
|
|
317
|
-
|
|
318
|
-
Checks format version compatibility of the `.kbdb`
|
|
319
|
-
database against the current WASM engine. Read-only.
|
|
320
|
-
|
|
321
|
-
```typescript
|
|
322
|
-
checkVersion(
|
|
323
|
-
targetPath: string,
|
|
324
|
-
): Promise<VersionStatus>
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
|
-
### Cache
|
|
330
|
-
|
|
331
|
-
#### `invalidate(kbid)`
|
|
332
|
-
|
|
333
|
-
Evicts a single section from the daemon's in-memory
|
|
334
|
-
cache.
|
|
335
|
-
|
|
336
|
-
```typescript
|
|
337
|
-
invalidate(kbid: string): Promise<void>
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
#### `invalidateAll()`
|
|
341
|
-
|
|
342
|
-
Clears all entries from the daemon's in-memory
|
|
343
|
-
cache.
|
|
344
|
-
|
|
345
|
-
```typescript
|
|
346
|
-
invalidateAll(): Promise<void>
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
---
|
|
350
|
-
|
|
351
|
-
### Lifecycle
|
|
352
|
-
|
|
353
|
-
#### `status()`
|
|
354
|
-
|
|
355
|
-
Returns diagnostic status including initialization
|
|
356
|
-
state and cache statistics.
|
|
357
|
-
|
|
358
|
-
```typescript
|
|
359
|
-
status(): Promise<StatusResult>
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
#### `dbStatus()`
|
|
363
|
-
|
|
364
|
-
Returns database metadata and status from the
|
|
365
|
-
daemon's cached state.
|
|
366
|
-
|
|
367
|
-
```typescript
|
|
368
|
-
dbStatus(): Promise<StatusResult>
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
#### `disconnect()`
|
|
372
|
-
|
|
373
|
-
Destroys the IPC socket and closes the connection.
|
|
374
|
-
|
|
375
|
-
```typescript
|
|
376
|
-
disconnect(): void
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
#### `isConnected`
|
|
380
|
-
|
|
381
|
-
Read-only getter that returns `true` when the IPC
|
|
382
|
-
socket is connected and healthy.
|
|
383
|
-
|
|
384
|
-
```typescript
|
|
385
|
-
get isConnected(): boolean;
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
---
|
|
389
|
-
|
|
390
|
-
## Types
|
|
391
|
-
|
|
392
|
-
### `WorkerClientOptions`
|
|
393
|
-
|
|
394
|
-
```typescript
|
|
395
|
-
interface WorkerClientOptions {
|
|
396
|
-
readonly dbPath?: string;
|
|
397
|
-
readonly contextPath?: string;
|
|
398
|
-
readonly autoSpawn?: boolean;
|
|
399
|
-
readonly connectTimeoutMs?: number;
|
|
400
|
-
readonly requestTimeoutMs?: number;
|
|
401
|
-
readonly workerScript?: string;
|
|
402
|
-
}
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
### `SearchParams`
|
|
406
|
-
|
|
407
|
-
```typescript
|
|
408
|
-
interface SearchParams {
|
|
409
|
-
readonly query: string;
|
|
410
|
-
readonly mode?: 'sections' | 'documents' | 'stats';
|
|
411
|
-
readonly limit?: number;
|
|
412
|
-
readonly offset?: number;
|
|
413
|
-
readonly content?: boolean;
|
|
414
|
-
}
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
### `PagedSearchResult`
|
|
418
|
-
|
|
419
|
-
```typescript
|
|
420
|
-
interface PagedSearchResult {
|
|
421
|
-
readonly items: readonly SearchResult[];
|
|
422
|
-
readonly total: number;
|
|
423
|
-
readonly offset: number;
|
|
424
|
-
readonly limit: number;
|
|
425
|
-
readonly has_more: boolean;
|
|
426
|
-
readonly relaxed: boolean;
|
|
427
|
-
}
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
### `SearchResult`
|
|
431
|
-
|
|
432
|
-
```typescript
|
|
433
|
-
interface SearchResult {
|
|
434
|
-
readonly kbid: string;
|
|
435
|
-
readonly heading: string | null;
|
|
436
|
-
readonly type: string;
|
|
437
|
-
readonly docids: readonly string[];
|
|
438
|
-
readonly score: number;
|
|
439
|
-
readonly confidence: number;
|
|
440
|
-
readonly snippet: string;
|
|
441
|
-
readonly matched_terms: readonly string[];
|
|
442
|
-
readonly matched_fields: readonly string[];
|
|
443
|
-
readonly created_at: string;
|
|
444
|
-
}
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
### `Section`
|
|
448
|
-
|
|
449
|
-
```typescript
|
|
450
|
-
interface Section {
|
|
451
|
-
readonly kbid: string;
|
|
452
|
-
readonly docid?: string;
|
|
453
|
-
readonly sectionType: string;
|
|
454
|
-
readonly content: string;
|
|
455
|
-
readonly size: number;
|
|
456
|
-
readonly createdAt: number;
|
|
457
|
-
readonly checksum: string;
|
|
458
|
-
}
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
### `AddSectionParams`
|
|
462
|
-
|
|
463
|
-
```typescript
|
|
464
|
-
interface AddSectionParams {
|
|
465
|
-
readonly sectionType: string;
|
|
466
|
-
readonly content: string;
|
|
467
|
-
readonly docid?: string;
|
|
468
|
-
}
|
|
469
|
-
```
|
|
470
|
-
|
|
471
|
-
### `StatusResult`
|
|
472
|
-
|
|
473
|
-
```typescript
|
|
474
|
-
interface StatusResult {
|
|
475
|
-
readonly initialized: boolean;
|
|
476
|
-
readonly contextPath: string;
|
|
477
|
-
readonly cacheStats: {
|
|
478
|
-
readonly contentCount: number;
|
|
479
|
-
readonly indexCount: number;
|
|
480
|
-
};
|
|
481
|
-
}
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
---
|
|
485
|
-
|
|
486
|
-
## How It Works
|
|
487
|
-
|
|
488
|
-
The client spawns a background worker daemon that
|
|
489
|
-
loads the Rust/WASM search engine. Communication
|
|
490
|
-
between the client and daemon happens over a local
|
|
491
|
-
IPC socket using JSON-RPC 2.0 with newline-delimited
|
|
492
|
-
framing. The daemon auto-starts on first use and
|
|
493
|
-
persists across invocations; if the connection drops,
|
|
494
|
-
the client automatically rediscovers or respawns the
|
|
495
|
-
daemon on the next method call.
|