@zenera/rag 1.1.11 → 1.1.14
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 +13 -5
- package/dist/docs/command.js +1 -1
- package/dist/docs/load.js +1 -1
- package/dist/docs/tools.js +2 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/andreyryabov/ZeneraNeo/main/docs/imgs/banner-rag-dark.svg">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/andreyryabov/ZeneraNeo/main/docs/imgs/banner-rag-light.svg" alt="ZENERA RAG" width="702">
|
|
5
|
+
</picture>
|
|
6
|
+
|
|
7
|
+
[](https://github.com/andreyryabov/ZeneraNeo/blob/main/LICENSE)
|
|
8
|
+
[](https://nodejs.org)
|
|
9
|
+
|
|
10
|
+
</div>
|
|
11
|
+
|
|
1
12
|
# @zenera/rag
|
|
2
13
|
|
|
3
14
|
**A corpus, indexed and searched by meaning — an OpenAPI description as a
|
|
4
15
|
graph, a pile of markdown as quotable passages — for agents that have to work
|
|
5
16
|
with something they have not read.**
|
|
6
17
|
|
|
7
|
-
[](https://github.com/andreyryabov/ZeneraNeo/blob/main/LICENSE)
|
|
8
|
-
[](https://nodejs.org)
|
|
9
|
-
|
|
10
18
|
> Part of [ZeneraNeo](https://github.com/andreyryabov/ZeneraNeo). It ships no
|
|
11
19
|
> binary of its own: installing it adds a `rag` **subcommand** to
|
|
12
20
|
> [`zen`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/cli/README.md),
|
|
@@ -149,7 +157,7 @@ verbatim with their line numbers, and a marker wherever something between two
|
|
|
149
157
|
of them was left out:
|
|
150
158
|
|
|
151
159
|
```
|
|
152
|
-
##
|
|
160
|
+
## acme_4.2.0/api/routing.md — 9 of 148 lines
|
|
153
161
|
|
|
154
162
|
5 | ## Rate limits
|
|
155
163
|
7 | Requests are counted per tenant and rejected past the limit.
|
|
@@ -164,7 +172,7 @@ interface**, not an afterthought. The second call is the same question inside
|
|
|
164
172
|
one part of the tree:
|
|
165
173
|
|
|
166
174
|
```sh
|
|
167
|
-
zen rag docs search --file "
|
|
175
|
+
zen rag docs search --file "acme_4.2.*/api/**" "rate limit for the users route"
|
|
168
176
|
zen rag docs search --section "Rate limits" --kind table "requests per minute"
|
|
169
177
|
zen rag docs search --mode text "X-RateLimit-Remaining" # exact wording only
|
|
170
178
|
zen rag docs search --interactive # narrow by typing
|
package/dist/docs/command.js
CHANGED
|
@@ -112,7 +112,7 @@ export const command = {
|
|
|
112
112
|
'',
|
|
113
113
|
dim(' A --file pattern with * or ? is a glob over the whole document name,'),
|
|
114
114
|
dim(' otherwise a substring. Names are relative to what was indexed, so'),
|
|
115
|
-
dim(' --file "
|
|
115
|
+
dim(' --file "acme_4.2*/api/**" is one release and --file routing is a word.'),
|
|
116
116
|
'',
|
|
117
117
|
'Exact listing — no embedder, no credential',
|
|
118
118
|
...table([
|
package/dist/docs/load.js
CHANGED
|
@@ -17,7 +17,7 @@ import { parseAll } from "./pool.js";
|
|
|
17
17
|
//
|
|
18
18
|
// Every document is given a NAME, which is its path relative to the common root
|
|
19
19
|
// of everything that was named — so indexing two release trees keeps
|
|
20
|
-
// `
|
|
20
|
+
// `acme_4.1.0/api/routing.md` and `acme_4.2.0/api/routing.md` apart, and a search
|
|
21
21
|
// can be narrowed to one of them with a pattern over exactly that string. The
|
|
22
22
|
// name is the identity: it is stamped on every chunk, it is what `sources/`
|
|
23
23
|
// files are called, and nothing anywhere records where the file was on the
|
package/dist/docs/tools.js
CHANGED
|
@@ -16,7 +16,7 @@ import { SEARCH_MODES } from "./search.js";
|
|
|
16
16
|
//
|
|
17
17
|
// `search_docs` is shaped for the second call rather than the first. The first
|
|
18
18
|
// is always a sentence and always returns too much of the wrong tree; the
|
|
19
|
-
// second is the same sentence with `files: ["
|
|
19
|
+
// second is the same sentence with `files: ["acme_4.2*/api/**"]`, or
|
|
20
20
|
// `section: "Rate limits"`, or `kind: ["table"]` because the answer is a table
|
|
21
21
|
// and not the prose around it. Those are parameters and not separate tools, so
|
|
22
22
|
// narrowing costs one call and not three.
|
|
@@ -56,7 +56,7 @@ export function docsTools(index, options = {}) {
|
|
|
56
56
|
description: 'What is wanted, as a sentence rather than keywords.',
|
|
57
57
|
},
|
|
58
58
|
files: strings('Only documents whose name matches. A glob if it has * or ?, e.g. ' +
|
|
59
|
-
'"guides/**" or "
|
|
59
|
+
'"guides/**" or "acme_4.2*/api/**"; otherwise a substring.'),
|
|
60
60
|
exclude_files: strings('Documents to leave out, matched the same way.'),
|
|
61
61
|
section: strings('Only under these headings, and whatever nests inside them. A heading ' +
|
|
62
62
|
'title, or a structure path from an earlier answer.'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenera/rag",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.14",
|
|
4
4
|
"description": "Retrieval over a corpus: openapi/swagger documents as a searchable graph, markdown and text as searchable passages.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@apidevtools/swagger-parser": "^12.0.0",
|
|
63
63
|
"@lancedb/lancedb": "^0.38.0",
|
|
64
|
-
"@zenera/cli": "^1.1.
|
|
65
|
-
"@zenera/neo": "^1.1.
|
|
64
|
+
"@zenera/cli": "^1.1.14",
|
|
65
|
+
"@zenera/neo": "^1.1.14",
|
|
66
66
|
"graphology": "^0.26.0",
|
|
67
67
|
"remark-frontmatter": "^5.0.0",
|
|
68
68
|
"remark-gfm": "^4.0.1",
|