@hilbras/omninode 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +132 -2
- package/dist/cli/index.js +842 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +1036 -0
- package/dist/index.js +588 -0
- package/dist/index.js.map +1 -0
- package/package.json +67 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Hilbras
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,133 @@
|
|
|
1
|
-
#
|
|
1
|
+
# OmniNode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/Hilbras/OmniNode/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/@hilbras/omninode)
|
|
5
|
+
[](https://www.npmjs.com/package/@hilbras/omninode)
|
|
6
|
+
[](https://www.npmjs.com/package/@hilbras/omninode)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](docs/DEVELOPMENT_PLAN.md)
|
|
9
|
+
|
|
10
|
+
**OmniNode** is a provider-agnostic multi-AI orchestration platform. It coordinates
|
|
11
|
+
CLI-based AI agents, AI providers, persistent memory, roles, reports and planning
|
|
12
|
+
into a unified execution system — so multiple AI systems can collaborate on complex
|
|
13
|
+
software engineering and knowledge-work tasks.
|
|
14
|
+
|
|
15
|
+
OmniNode is **not an AI provider** and is **not dependent on OmniHilbras** (or on
|
|
16
|
+
OpenAI, Gemini, DeepSeek, Qwen, or any other specific vendor). It orchestrates
|
|
17
|
+
existing intelligence; it does not try to become another model.
|
|
18
|
+
|
|
19
|
+
## Status
|
|
20
|
+
|
|
21
|
+
**v0.2.0 — Phase 1: Provider Infrastructure** (see [docs/DEVELOPMENT_PLAN.md](docs/DEVELOPMENT_PLAN.md)
|
|
22
|
+
for the full plan and roadmap).
|
|
23
|
+
|
|
24
|
+
What exists today:
|
|
25
|
+
|
|
26
|
+
- Core type contracts: provider, model, agent, role, task, report, pipeline,
|
|
27
|
+
protocol, memory (`src/types/`)
|
|
28
|
+
- **Provider system** (`src/providers/`, `src/registry/`):
|
|
29
|
+
- OpenAI-compatible adapter — works with OpenAI, OpenRouter, local runtimes
|
|
30
|
+
(Ollama, LM Studio, vLLM) and custom gateways exposing `/models` and `/chat/completions`
|
|
31
|
+
- Model discovery with normalization into the model registry (`provider:model` keys)
|
|
32
|
+
- Health checks: connectivity, authentication and server-error classification
|
|
33
|
+
- Authentication from environment variables only — keys never touch config files
|
|
34
|
+
- Chat completions (`IChatProvider`) — the foundation for the planner phases
|
|
35
|
+
- Provider factory mapping config to adapters (OmniHilbras gets a dedicated
|
|
36
|
+
adapter in Phase 2)
|
|
37
|
+
- Typed error hierarchy (`src/errors/`)
|
|
38
|
+
- Leveled logger with pluggable sink (`src/logger/`)
|
|
39
|
+
- Configuration system: `omninode.yaml` with `${ENV_VAR}` expansion and strict
|
|
40
|
+
validation (`src/config/`)
|
|
41
|
+
- CLI: `init`, `provider add/list/test`, `models`, `agent list`, `role list`,
|
|
42
|
+
and honest stubs for the phase-dependent commands (`src/cli/`)
|
|
43
|
+
- Test infrastructure (Vitest) and CI (GitHub Actions)
|
|
44
|
+
|
|
45
|
+
## Requirements
|
|
46
|
+
|
|
47
|
+
- Node.js >= 20
|
|
48
|
+
|
|
49
|
+
## Quick start (from source)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npm install
|
|
53
|
+
npm run build
|
|
54
|
+
node dist/cli/index.js --help
|
|
55
|
+
|
|
56
|
+
# Or run from source:
|
|
57
|
+
npm run omninode -- --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Start a project:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
omninode init # writes omninode.yaml in the current directory
|
|
64
|
+
|
|
65
|
+
# Register a provider and verify it end to end
|
|
66
|
+
omninode provider add --name my-gateway --type openai-compatible \
|
|
67
|
+
--base-url https://example.com/v1 --api-key-env-var MY_API_KEY
|
|
68
|
+
omninode provider test my-gateway
|
|
69
|
+
|
|
70
|
+
# Discover models into the registry
|
|
71
|
+
omninode models
|
|
72
|
+
omninode models my-gateway --capability chat
|
|
73
|
+
|
|
74
|
+
omninode agent list
|
|
75
|
+
omninode role list
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
See [omninode.yaml.example](omninode.yaml.example) for a full configuration.
|
|
79
|
+
|
|
80
|
+
### Configuration
|
|
81
|
+
|
|
82
|
+
OmniNode reads `omninode.yaml` (or `.yml` / `.json`) from the working directory.
|
|
83
|
+
Two rules matter:
|
|
84
|
+
|
|
85
|
+
1. **Credentials never live in the file.** Reference environment variables with
|
|
86
|
+
`api_key_env_var: MY_API_KEY`; `${VAR}` / `${VAR:-fallback}` references anywhere
|
|
87
|
+
in the file are expanded at load time and unset variables abort loading.
|
|
88
|
+
2. **Unknown keys are rejected.** Typos fail loudly instead of being ignored.
|
|
89
|
+
|
|
90
|
+
## Development
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm run build # bundle with tsup (library + CLI)
|
|
94
|
+
npm test # run tests once
|
|
95
|
+
npm run test:watch # watch mode
|
|
96
|
+
npm run lint # eslint
|
|
97
|
+
npm run typecheck # tsc --noEmit
|
|
98
|
+
npm run format # prettier
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Roadmap
|
|
102
|
+
|
|
103
|
+
Phases 0–11 are laid out in [docs/DEVELOPMENT_PLAN.md](docs/DEVELOPMENT_PLAN.md):
|
|
104
|
+
|
|
105
|
+
| Version | Milestone |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| v0.1.0 | Foundation |
|
|
108
|
+
| **v0.2.0** | **Provider System (current)** |
|
|
109
|
+
| v0.3.0 | OmniHilbras Integration (optional, like every provider) |
|
|
110
|
+
| v0.4.0 | Agent System |
|
|
111
|
+
| v0.5.0 | Roles & Tasks |
|
|
112
|
+
| v0.6.0 | Pipeline Engine |
|
|
113
|
+
| v0.7.0 | Multi-AI Reports |
|
|
114
|
+
| v0.8.0 | Remembera (optional memory integration) |
|
|
115
|
+
| v0.9.0 | Planner |
|
|
116
|
+
| v0.10.0 | End-to-End Runtime |
|
|
117
|
+
| v1.0.0 | Production Release |
|
|
118
|
+
|
|
119
|
+
Core architectural rule: OmniNode must run successfully with **zero Hilbras
|
|
120
|
+
dependencies**. OmniHilbras and Remembera make it more powerful, but neither is
|
|
121
|
+
required for the core engine.
|
|
122
|
+
|
|
123
|
+
## Install
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
npm install -g @hilbras/omninode
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Or use it as a library: `npm install @hilbras/omninode`.
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
[MIT](LICENSE)
|