@zenera/neo 1.1.31 → 1.1.33
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 +29 -24
- package/dist/models/gateway.d.ts +15 -1
- package/dist/models/gateway.js +15 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
[](https://www.npmjs.com/package/@zenera/neo)
|
|
18
18
|
[](https://github.com/andreyryabov/ZeneraNeo/blob/main/LICENSE)
|
|
19
19
|
[](https://nodejs.org)
|
|
20
|
+
[](https://github.com/andreyryabov/ZeneraNeo/actions/workflows/ci.yml)
|
|
21
|
+
|
|
22
|
+
[Install](#install) · [Use](#use) · [Entry points](#entry-points) · [Documentation](#documentation) · [Family](#the-rest-of-the-family) · [License](#license)
|
|
20
23
|
|
|
21
24
|
</div>
|
|
22
25
|
|
|
@@ -29,6 +32,28 @@ an append-only trajectory.**
|
|
|
29
32
|
> open-source side project for experimentation and chore work - **not** the
|
|
30
33
|
> official Zenera AI Platform. It carries no support or stability promises.
|
|
31
34
|
|
|
35
|
+
## What it gives you
|
|
36
|
+
|
|
37
|
+
- **Agents** - an instruction, a model, tools, skills, who it may hand the work
|
|
38
|
+
to, and how it splits into parallel branches. There is no hidden orchestration
|
|
39
|
+
layer.
|
|
40
|
+
- **Models** - OpenAI, Anthropic, Google/Vertex and OpenRouter behind one
|
|
41
|
+
interface, each through its own SDK, plus any OpenAI-compatible endpoint.
|
|
42
|
+
Named providers and model aliases resolve from config or from the host.
|
|
43
|
+
- **Tools** - plain typed functions, selectable per agent by name, group or
|
|
44
|
+
wildcard. Workspace file tools and a Podman sandbox ship with the library.
|
|
45
|
+
- **Skills** - instruction bundles discovered and loaded on demand instead of
|
|
46
|
+
permanently occupying the prompt, optionally owning their own tools.
|
|
47
|
+
- **Memory** - a timed, masked knowledge graph that outlives a run: recall
|
|
48
|
+
returns a stitched subgraph rather than a ranked list, remembered files are
|
|
49
|
+
mounted at `/memory`, and standing preferences go into the system prompt.
|
|
50
|
+
- **Trajectory** - an append-only log of everything that happened. What is sent
|
|
51
|
+
to a provider is derived from it, and compaction _covers_ nodes rather than
|
|
52
|
+
deleting them, so the full record survives even when older turns have to be
|
|
53
|
+
pushed out of the context window.
|
|
54
|
+
- **Inspection** - `renderReportHtml` turns any run into one self-contained HTML
|
|
55
|
+
file: the graph, every request, every token.
|
|
56
|
+
|
|
32
57
|
## Install
|
|
33
58
|
|
|
34
59
|
Node.js 24+, ESM only. Runtime dependencies are `yaml` and `zod` and nothing
|
|
@@ -140,28 +165,6 @@ It is validated strictly at load: an unknown tool, a handoff to nobody, a
|
|
|
140
165
|
missing prompt file - each fails immediately, naming the offending key, instead
|
|
141
166
|
of surfacing three turns into a run as a confused model.
|
|
142
167
|
|
|
143
|
-
## What it gives you
|
|
144
|
-
|
|
145
|
-
- **Agents** - an instruction, a model, tools, skills, who it may hand the work
|
|
146
|
-
to, and how it splits into parallel branches. There is no hidden orchestration
|
|
147
|
-
layer.
|
|
148
|
-
- **Models** - OpenAI, Anthropic, Google/Vertex and OpenRouter behind one
|
|
149
|
-
interface, each through its own SDK, plus any OpenAI-compatible endpoint.
|
|
150
|
-
Named providers and model aliases resolve from config or from the host.
|
|
151
|
-
- **Tools** - plain typed functions, selectable per agent by name, group or
|
|
152
|
-
wildcard. Workspace file tools and a Podman sandbox ship with the library.
|
|
153
|
-
- **Skills** - instruction bundles discovered and loaded on demand instead of
|
|
154
|
-
permanently occupying the prompt, optionally owning their own tools.
|
|
155
|
-
- **Memory** - a timed, masked knowledge graph that outlives a run: recall
|
|
156
|
-
returns a stitched subgraph rather than a ranked list, remembered files are
|
|
157
|
-
mounted at `/memory`, and standing preferences go into the system prompt.
|
|
158
|
-
- **Trajectory** - an append-only log of everything that happened. What is sent
|
|
159
|
-
to a provider is derived from it, and compaction _covers_ nodes rather than
|
|
160
|
-
deleting them, so the full record survives even when older turns have to be
|
|
161
|
-
pushed out of the context window.
|
|
162
|
-
- **Inspection** - `renderReportHtml` turns any run into one self-contained HTML
|
|
163
|
-
file: the graph, every request, every token.
|
|
164
|
-
|
|
165
168
|
## Entry points
|
|
166
169
|
|
|
167
170
|
| Specifier | Contents |
|
|
@@ -184,9 +187,11 @@ folder.
|
|
|
184
187
|
|
|
185
188
|
| Package | What it is |
|
|
186
189
|
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
187
|
-
| [`@zenera/cli`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/cli/README.md) | `zen` -
|
|
190
|
+
| [`@zenera/cli`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/cli/README.md) | `zen` - agent projects on the command line |
|
|
191
|
+
| **`@zenera/neo`** | the runtime - agents, models, tools, skills, memory |
|
|
188
192
|
| [`@zenera/faker`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/faker/README.md) | `zen faker` - a mock API from an openapi/swagger document |
|
|
189
|
-
| [`@zenera/rag`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/rag/README.md) | `zen rag` -
|
|
193
|
+
| [`@zenera/rag`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/rag/README.md) | `zen rag` - indexing and search for documents and API schemas |
|
|
194
|
+
| [`@zenera/view`](https://github.com/andreyryabov/ZeneraNeo/blob/main/packages/view/README.md) | `zen view` - a live local viewer for a folder |
|
|
190
195
|
|
|
191
196
|
`@zenera/rag` also exports tools you can hand straight to `loadProject`, so an
|
|
192
197
|
agent can search an API it has never read.
|
package/dist/models/gateway.d.ts
CHANGED
|
@@ -10,7 +10,21 @@ export interface Gateway {
|
|
|
10
10
|
/** the virtual key; absent for a gateway that enforces none */
|
|
11
11
|
apiKey?: string;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* The single switch for gateway mode: the Bifrost gateway named by
|
|
15
|
+
* `BIFROST_BASE_URL` (and its virtual key from `BIFROST_API_KEY`), or undefined
|
|
16
|
+
* when providers are called directly with their own vendor keys.
|
|
17
|
+
*
|
|
18
|
+
* When it returns a gateway, the model registry routes every provider through
|
|
19
|
+
* it (only a pre-built client is left alone), and the CLI stops requiring
|
|
20
|
+
* per-vendor keys since the virtual key stands in for all of them.
|
|
21
|
+
*
|
|
22
|
+
* The environment is the only source, read on every call and never cached.
|
|
23
|
+
* `zen key mode bifrost` keeps the url and key in the keyring, not the shell;
|
|
24
|
+
* they reach `process.env` only when the CLI's `KeyStore.materialize()` runs.
|
|
25
|
+
* Called before that, or from the library without the CLI, this returns
|
|
26
|
+
* undefined unless `BIFROST_BASE_URL` is really set.
|
|
27
|
+
*/
|
|
14
28
|
export declare function gatewayOf(): Gateway | undefined;
|
|
15
29
|
/** The wire formats Bifrost has a drop-in endpoint for. */
|
|
16
30
|
export type GatewayProtocol = 'openai' | 'anthropic' | 'gemini';
|
package/dist/models/gateway.js
CHANGED
|
@@ -19,7 +19,21 @@ export const GATEWAY_URL_ENV = 'BIFROST_BASE_URL';
|
|
|
19
19
|
export const GATEWAY_KEY_ENV = 'BIFROST_API_KEY';
|
|
20
20
|
/** Bifrost's own virtual-key header: still read when `Authorization` is taken by gateway login. */
|
|
21
21
|
export const GATEWAY_KEY_HEADER = 'x-bf-vk';
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* The single switch for gateway mode: the Bifrost gateway named by
|
|
24
|
+
* `BIFROST_BASE_URL` (and its virtual key from `BIFROST_API_KEY`), or undefined
|
|
25
|
+
* when providers are called directly with their own vendor keys.
|
|
26
|
+
*
|
|
27
|
+
* When it returns a gateway, the model registry routes every provider through
|
|
28
|
+
* it (only a pre-built client is left alone), and the CLI stops requiring
|
|
29
|
+
* per-vendor keys since the virtual key stands in for all of them.
|
|
30
|
+
*
|
|
31
|
+
* The environment is the only source, read on every call and never cached.
|
|
32
|
+
* `zen key mode bifrost` keeps the url and key in the keyring, not the shell;
|
|
33
|
+
* they reach `process.env` only when the CLI's `KeyStore.materialize()` runs.
|
|
34
|
+
* Called before that, or from the library without the CLI, this returns
|
|
35
|
+
* undefined unless `BIFROST_BASE_URL` is really set.
|
|
36
|
+
*/
|
|
23
37
|
export function gatewayOf() {
|
|
24
38
|
const url = process.env[GATEWAY_URL_ENV]?.trim();
|
|
25
39
|
if (!url) {
|