@hilbras/omninode 2.0.0-alpha.17 → 2.0.0-alpha.18
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 +123 -357
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/@hilbras/omninode)
|
|
6
6
|
[](https://www.npmjs.com/package/@hilbras/omninode)
|
|
7
7
|
[](LICENSE)
|
|
8
|
-
[](docs/ROADMAP_V2.md)
|
|
9
9
|
|
|
10
10
|
**OmniNode** is a provider-agnostic multi-AI orchestration platform. It coordinates
|
|
11
11
|
CLI-based AI agents, AI providers, persistent memory, roles, reports and planning
|
|
@@ -18,404 +18,170 @@ existing intelligence; it does not try to become another model.
|
|
|
18
18
|
|
|
19
19
|
## Status
|
|
20
20
|
|
|
21
|
-
**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
the
|
|
26
|
-
full loop from §28 runs in one command —
|
|
27
|
-
`User → project context → memory → research agents → reports → aggregation →
|
|
28
|
-
planner → plan → execution → result` — with audit logging, error recovery and
|
|
29
|
-
production hardening (see [docs/DEVELOPMENT_PLAN.md](docs/DEVELOPMENT_PLAN.md)
|
|
30
|
-
for the plan and [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the design).
|
|
31
|
-
|
|
32
|
-
### What's new in v2 (so far)
|
|
33
|
-
|
|
34
|
-
- **Phase 17 — Testing Expansion**: an explicit, auditable **failure
|
|
35
|
-
matrix** covering every scenario the roadmap lists — provider
|
|
36
|
-
429/500/401, model unavailable, network loss, malformed gateway
|
|
37
|
-
responses, agent crash/timeout/missing executable, malformed JSONL,
|
|
38
|
-
huge output, corrupted persistence, duplicate execution, partial
|
|
39
|
-
pipeline failure, Remembera/OmniHilbras unavailable — plus duplicate
|
|
40
|
-
configuration names now rejected instead of silently shadowing, and
|
|
41
|
-
protocol diagnostics surfaced on task results. Details:
|
|
42
|
-
[TESTING.md](docs/TESTING.md).
|
|
43
|
-
- **Phase 16 — Configuration v2**: explicit precedence (CLI → env →
|
|
44
|
-
project file → user file → profile overlay → defaults), named
|
|
45
|
-
**profiles** (`development`/`production`/`testing`), `OMNINODE_*`
|
|
46
|
-
environment overrides, and actionable validation diagnostics
|
|
47
|
-
("Provider 'deepseek': API key reference is missing"). `config
|
|
48
|
-
validate` now reports which sources and defaults produced the
|
|
49
|
-
effective configuration. Details: [CONFIGURATION.md](docs/CONFIGURATION.md).
|
|
50
|
-
- **Phase 15 — CLI v2**: documented **exit codes** (0 success, 2 invalid
|
|
51
|
-
input, 3 config, 4 provider, 5 agent, 6 timeout, 7 cancelled, 8 not
|
|
52
|
-
found, 9 not implemented), a `config` group (`show` / `path` /
|
|
53
|
-
`validate`, never printing secret values), `pipeline create`, a real
|
|
54
|
-
`provider remove`, `agent run`, the `model` alias for `models`, and
|
|
55
|
-
`--json` output across the list and inspect commands. Guide:
|
|
56
|
-
[CLI.md](docs/CLI.md).
|
|
57
|
-
- **Phase 14 — Audit & Observability**: every audit event now carries
|
|
58
|
-
correlation ids (`taskId`, `pipelineId`, `executionId`, `agentId`,
|
|
59
|
-
`providerId`), new event types cover agent start/complete and provider
|
|
60
|
-
errors, logs can be emitted as machine-readable JSON
|
|
61
|
-
(`logging.format: json`), and `omninode task|pipeline|agent|provider
|
|
62
|
-
inspect <id>` answers "what happened?" after a failed run — with
|
|
63
|
-
`--json` for tooling.
|
|
64
|
-
- **Phase 13 — Security Hardening**: configuration containing literal
|
|
65
|
-
credentials is **rejected before parsing** (with a redacted, actionable
|
|
66
|
-
error); reports over 256 KiB are rejected rather than persisted; static
|
|
67
|
-
guards keep shell execution out of the codebase; and `omninode security
|
|
68
|
-
audit` reviews a project's posture (environment exposure, external working
|
|
69
|
-
directories, credential references) and states the agent trust model
|
|
70
|
-
plainly — agents run with your OS user's permissions, and OmniNode is not
|
|
71
|
-
a sandbox.
|
|
72
|
-
- **Phase 12 — Persistence Layer v2**: writes are now **fsynced and atomic**
|
|
73
|
-
(temp → fsync → rename → directory fsync), corrupt store files are
|
|
74
|
-
**quarantined instead of lost**, documents carry a **schema version** with
|
|
75
|
-
v1 data migrated in place (`omninode migrate [--check]`), and files from a
|
|
76
|
-
newer OmniNode are refused rather than misread. Details:
|
|
77
|
-
[PERSISTENCE.md](docs/PERSISTENCE.md).
|
|
78
|
-
- **Phase 11 — Planner v2**: the planner now receives the full §15 input —
|
|
79
|
-
task, project context, agent reports, **aggregated findings (consensus and
|
|
80
|
-
conflicts included)**, memory and **constraints** (settable per pipeline
|
|
81
|
-
step). Plans carry an explicit goal, every generated plan is **schema
|
|
82
|
-
validated**, invalid output produces a **structured error** or falls back to
|
|
83
|
-
heuristic planning, and a guard test proves the planner module depends on no
|
|
84
|
-
specific provider.
|
|
85
|
-
- **Phase 10 — Aggregation Improvements**: when agents disagree,
|
|
86
|
-
OmniNode now says so instead of flattening the answer — **conflict
|
|
87
|
-
detection** preserves every position (severity spread, divergent
|
|
88
|
-
recommended fixes), multi-agent **agreements** are recorded as
|
|
89
|
-
consensus, confidence is preserved per source, and the combined
|
|
90
|
-
report carries provenance-rich metadata. Still fully deterministic.
|
|
91
|
-
- **Phase 9 — Report System v2**: reports are validated machine-readable
|
|
92
|
-
objects — `validateReport()` runs on everything entering the system and
|
|
93
|
-
malformed reports are rejected with diagnostics instead of poisoning
|
|
94
|
-
aggregation. Findings gain description/confidence/source/recommendation,
|
|
95
|
-
evidence is typed (`file`, `line`, `url`, `command`, `observation`,
|
|
96
|
-
`artifact`), and reports carry artifacts and run provenance.
|
|
97
|
-
Details: [REPORTS.md](docs/REPORTS.md).
|
|
98
|
-
- **Phase 8 — Remembera / Memory v2**: the memory contract is formalized
|
|
99
|
-
(`retrieve` / `store` / `search` / `metadata` with v1 `query` / `write`
|
|
100
|
-
aliases kept working), memory gains structured **categories** (decisions,
|
|
101
|
-
problems, conventions, tasks…), retrieval is **task-oriented and budgeted**
|
|
102
|
-
(never "load all memory"), and `memory.required: true` makes backend
|
|
103
|
-
failures fatal instead of tolerated. Details: [MEMORY.md](docs/MEMORY.md).
|
|
104
|
-
- **Phase 7 — OmniHilbras Integration v2**: the dedicated adapter now
|
|
105
|
-
captures gateway-level metadata (version, tier, region) and attaches it
|
|
106
|
-
to discovered models, honors provider-level `timeout_ms`, and supports
|
|
107
|
-
streaming completions (`stream()` over SSE) — while a guard test proves
|
|
108
|
-
the core references OmniHilbras *only* through the provider layer, and a
|
|
109
|
-
full pipeline runs with no OmniHilbras configured at all.
|
|
110
|
-
- **Phase 6 — Provider Infrastructure v2**: standardized provider contract
|
|
111
|
-
(`providerId`, secret-free `authentication`, declared `capabilities`,
|
|
112
|
-
`connect()` / `getModel()` discovery), richer model metadata (context
|
|
113
|
-
window, input/output modalities, tool/vision/structured-output/streaming
|
|
114
|
-
support), and **unified error normalization** — every provider failure now
|
|
115
|
-
carries a stable `kind` (auth, rate limit, invalid request, model not
|
|
116
|
-
found, timeout, network, server, unknown) plus `retryable` and
|
|
117
|
-
`retryAfterMs`. Details: [PROVIDERS.md](docs/PROVIDERS.md).
|
|
118
|
-
- **Phase 5 — Pipeline Lifecycle**: first-class pipeline cancellation
|
|
119
|
-
(`omninode pipeline cancel <run-id>`: stop scheduling → cancel running
|
|
120
|
-
tasks → terminate agent processes → persist a `cancelled` run), `pipeline
|
|
121
|
-
validate` for pre-run checks (deps, cycles, agents, model references),
|
|
122
|
-
explicit run/step **attempts** in the run record, the
|
|
123
|
-
`IPipelineExecutor` contract, and recovery awareness — runs left `running`
|
|
124
|
-
without a `finishedAt` are flagged as interrupted in `pipeline runs`.
|
|
125
|
-
- **Phase 4 — Agent Adapter Hardening**: process-tree cleanup (agents run in
|
|
126
|
-
their own process group; timeout, cancel and Ctrl-C reap the whole tree, so
|
|
127
|
-
no orphaned children), explicit environment policies
|
|
128
|
-
(`inherit` / `allowlist` / `denylist` / `explicit`), working-directory
|
|
129
|
-
validation against project boundaries, per-stream output limits that kill
|
|
130
|
-
runaway agents, binary-safe output decoding, human-readable exit/signal
|
|
131
|
-
reporting, and a native `IAgentAdapter` registry so new integration styles
|
|
132
|
-
plug in without touching core.
|
|
133
|
-
- **Phase 3 — Agent Protocol v2**: versioned protocol
|
|
134
|
-
(`omninode-agent-protocol/2`), fully correlated envelopes, the complete
|
|
135
|
-
message-type set, HELLO handshake, QUESTION/RESPONSE round-trips, and
|
|
136
|
-
malformed input that can never crash OmniNode. Spec:
|
|
137
|
-
[PROTOCOL.md](docs/PROTOCOL.md).
|
|
138
|
-
- **Phase 2 — Execution Reliability**: a task killed after dispatch is
|
|
139
|
-
`unknown`, **not** `failed` — retries never duplicate side effects blindly;
|
|
140
|
-
bounded retries with backoff, execution identity and history.
|
|
141
|
-
- **Phase 1 — Architecture & API Stabilization**: one shared `JsonFileStore`
|
|
142
|
-
behind every local store, corrected dependency direction, and a guarded
|
|
143
|
-
public API ([API_STABILITY.md](docs/API_STABILITY.md), [API.md](docs/API.md),
|
|
144
|
-
[DEPRECATIONS.md](docs/DEPRECATIONS.md)).
|
|
145
|
-
|
|
146
|
-
### What's in v1.0
|
|
21
|
+
**v1.0.0 is feature complete. v2.0.0 — the reliability and interoperability
|
|
22
|
+
release — is in progress**, shipping as tagged prereleases (`v2.0.0-alpha.N`).
|
|
23
|
+
|
|
24
|
+
### v1.0.0 delivered
|
|
147
25
|
|
|
148
26
|
| Capability | Where |
|
|
149
27
|
| --- | --- |
|
|
150
|
-
| Provider abstraction, custom providers, model discovery | `src/providers
|
|
151
|
-
| OmniHilbras integration (optional) | `src/providers/omnihilbras
|
|
152
|
-
| CLI agents (stdin/arg/protocol), agent registry | `src/agents/` |
|
|
153
|
-
| Roles,
|
|
154
|
-
| Pipelines
|
|
155
|
-
| Multi-AI
|
|
156
|
-
| Planner
|
|
157
|
-
| Remembera
|
|
158
|
-
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
- `TaskEngine` runs tasks through their assigned agent, records structured
|
|
189
|
-
results (summary, reports, errors, timestamps)
|
|
190
|
-
- `TaskStore` interface with a local-first JSON implementation in
|
|
191
|
-
`.omninode/tasks.json` (atomic writes; swap in any backend)
|
|
192
|
-
- **Pipeline engine** (`src/pipelines/`):
|
|
193
|
-
- Pipelines defined in `omninode.yaml` under `project.pipelines`, validated
|
|
194
|
-
before every run (duplicate ids, unknown dependencies, cycles, missing
|
|
195
|
-
agents)
|
|
196
|
-
- Sequential execution by definition order; explicit `depends_on` unlocks
|
|
197
|
-
parallel branches, and research steps fan out to several agents in
|
|
198
|
-
parallel (§15)
|
|
199
|
-
- Step kinds: `research` (multi-agent fan-out), `collect`, `analyze`,
|
|
200
|
-
`plan` (calls a model as `provider:model-id` via the chat layer),
|
|
201
|
-
`execute`/`custom` (hand-off to an execution agent)
|
|
202
|
-
- Failure handling: retries per step, `on-success`/`on-failure`/`always`
|
|
203
|
-
conditions, combined context threaded downstream; every task runs through
|
|
204
|
-
the TaskEngine and every run is persisted to `.omninode/pipelines.json`
|
|
205
|
-
- **Multi-AI report system** (`src/reports/`):
|
|
206
|
-
- Report collection from finished tasks — structured protocol reports pass
|
|
207
|
-
through; plain text output is normalized via deterministic extraction
|
|
208
|
-
(findings/recommendations/evidence sections, severity guessing)
|
|
209
|
-
- Persistence in `.omninode/reports.json` with full source attribution
|
|
210
|
-
- Aggregation (§17): duplicate/similar findings merged via deterministic
|
|
211
|
-
token-set similarity, sources preserved, highest severity kept
|
|
212
|
-
- Combined reports generated automatically at the end of every pipeline run
|
|
213
|
-
- **Memory** (`src/memory/`): the §20 loop — before a task runs, relevant
|
|
214
|
-
memory is gathered and injected into the agent's context; after it finishes,
|
|
215
|
-
the outcome is recorded back. High/critical findings are promoted to
|
|
216
|
-
project-level "known problems". Opt in via a `memory:` config section:
|
|
217
|
-
- `provider: local` (default) — JSON file at `.omninode/memory.json` with
|
|
218
|
-
deterministic keyword/tag relevance scoring, zero dependencies
|
|
219
|
-
- `provider: remembera` — the preferred Hilbras memory integration over
|
|
220
|
-
HTTP (base URL + `api_key_env_var`); strictly optional, like every
|
|
221
|
-
Hilbras component
|
|
222
|
-
- Memory failures are best-effort: logged, never fatal to a task
|
|
223
|
-
- **Planner layer** (`src/planner/`):
|
|
224
|
-
- Typed plan schema (`Plan` with ordered steps, targets, acceptance
|
|
225
|
-
criteria, risks, and finding traceability via `sourceFindings`)
|
|
226
|
-
- Planner context builder: objective + role + combined findings with
|
|
227
|
-
sources + relevant memory + research context
|
|
228
|
-
- `ModelPlanner` — asks a chat model (`provider:model-id`) for JSON matching
|
|
229
|
-
the plan contract; unparseable output degrades gracefully to the heuristic
|
|
230
|
-
fallback
|
|
231
|
-
- `HeuristicPlanner` — deterministic, offline plan from recommendations and
|
|
232
|
-
significant findings (also the fallback)
|
|
233
|
-
- Plans persist to `.omninode/plans.json`; pipeline runs record `planId`
|
|
234
|
-
- Configure with `planner: { kind: model | heuristic, model, instruction }`
|
|
235
|
-
— never hardcoded to any provider
|
|
236
|
-
- **End-to-end workflow** (§28, §27 Phase 9):
|
|
237
|
-
- One-command execution via the top-level `run` alias (`omninode run <pipeline> "<objective>"`)
|
|
238
|
-
- `omninode status` — full project state overview: providers, agents,
|
|
239
|
-
roles, pipelines, task/run/report/plan counts, memory provider + entries
|
|
240
|
-
- Pipeline runs persist their objective and a final `resultSummary` (§28 "Result")
|
|
241
|
-
- Error recovery: `task retry [--run]` (reset a failed/cancelled task) and
|
|
242
|
-
`pipeline retry <run-id>` (re-run a recorded failed run as a new run)
|
|
243
|
-
- Full integration test (`tests/e2e.test.ts`) drives the entire §28 workflow
|
|
244
|
-
through the real CLI against a local gateway
|
|
245
|
-
- Typed error hierarchy (`src/errors/`)
|
|
246
|
-
- Leveled logger with pluggable sink (`src/logger/`)
|
|
247
|
-
- Configuration system: `omninode.yaml` with `${ENV_VAR}` expansion and strict
|
|
248
|
-
validation (`src/config/`)
|
|
249
|
-
- CLI: `init`, `provider add/list/test`, `models`, `agent list`, `role list`,
|
|
250
|
-
and honest stubs for the phase-dependent commands (`src/cli/`)
|
|
251
|
-
- Test infrastructure (Vitest) and CI (GitHub Actions)
|
|
252
|
-
|
|
253
|
-
## Requirements
|
|
254
|
-
|
|
255
|
-
- Node.js >= 20
|
|
256
|
-
|
|
257
|
-
## Quick start (from source)
|
|
28
|
+
| Provider abstraction, custom providers, model discovery | [`src/providers/`](src/providers) |
|
|
29
|
+
| OmniHilbras integration (optional) | `src/providers/omnihilbras` |
|
|
30
|
+
| CLI agents (stdin / arg / protocol modes), agent registry | [`src/agents/`](src/agents) |
|
|
31
|
+
| Roles, tasks with lifecycle and retry | `src/roles`, [`src/tasks/`](src/tasks) |
|
|
32
|
+
| Pipelines: DAG scheduling, fan-out research, conditions, retries | [`src/pipelines/`](src/pipelines) |
|
|
33
|
+
| Multi-AI reports with aggregation and conflict detection | [`src/reports/`](src/reports) |
|
|
34
|
+
| Planner (model-backed with heuristic fallback) | [`src/planner/`](src/planner) |
|
|
35
|
+
| Memory (local + Remembera) wired into the task loop | [`src/memory/`](src/memory) |
|
|
36
|
+
| End-to-end workflow in one command | `omninode run <pipeline> "<objective>"` |
|
|
37
|
+
| Audit log, security model, examples, Docker runtime | [`src/audit/`](src/audit), [docs/SECURITY.md](docs/SECURITY.md) |
|
|
38
|
+
|
|
39
|
+
### v2.0.0 progress (19 of 24 phases)
|
|
40
|
+
|
|
41
|
+
| # | Phase | Outcome |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| 1 | Architecture & API stabilization | shared persistence base, guarded public API, deprecation policy |
|
|
44
|
+
| 2 | Execution reliability | `unknown` ≠ `failed`, attempts, execution identity, timeouts |
|
|
45
|
+
| 3 | Agent Protocol v2 | versioned, correlated envelopes, malformed input never crashes |
|
|
46
|
+
| 4 | Agent adapter hardening | process-tree cleanup, env policies, output limits, cwd confinement |
|
|
47
|
+
| 5 | Pipeline lifecycle | cancellation, partial/unknown propagation, interrupted-run detection |
|
|
48
|
+
| 6 | Provider infrastructure | model metadata, `connect`/`getModel`, normalized error kinds |
|
|
49
|
+
| 7 | OmniHilbras v2 | gateway metadata, streaming, enforced separation |
|
|
50
|
+
| 8 | Memory v2 | formal contract, categories, budgeted retrieval, `required` policy |
|
|
51
|
+
| 9 | Report system v2 | validated reports, typed evidence, provenance |
|
|
52
|
+
| 10 | Aggregation | agreements, conflicts (both positions preserved), confidence |
|
|
53
|
+
| 11 | Planner v2 | full input, plan validation, structured errors, provider-agnostic |
|
|
54
|
+
| 12 | Persistence | atomic writes, corruption quarantine, schema v2 + migration |
|
|
55
|
+
| 13 | Security hardening | inline-secret refusal, static guards, `security audit` |
|
|
56
|
+
| 14 | Audit & observability | correlated events, JSON logs, `inspect` diagnostics |
|
|
57
|
+
| 15 | CLI v2 | exit codes, `config` group, `pipeline create`, `--json` |
|
|
58
|
+
| 16 | Configuration v2 | precedence, profiles, `OMNINODE_*`, diagnostics |
|
|
59
|
+
| 17 | Testing expansion | explicit failure matrix + regression tests |
|
|
60
|
+
| 18 | Documentation overhaul | complete document set, rewritten README |
|
|
61
|
+
| 19 | Package quality | public exports, runtime validation, npm contents (next) |
|
|
62
|
+
| 20–24 | Performance · developer experience · CI/CD · migration tooling · final hardening | planned |
|
|
63
|
+
|
|
64
|
+
The roadmap is [docs/ROADMAP_V2.md](docs/ROADMAP_V2.md); the completed v1 plan is
|
|
65
|
+
[docs/DEVELOPMENT_PLAN.md](docs/DEVELOPMENT_PLAN.md).
|
|
258
66
|
|
|
259
|
-
|
|
260
|
-
npm install
|
|
261
|
-
npm run build
|
|
262
|
-
node dist/cli/index.js --help
|
|
67
|
+
## Documentation
|
|
263
68
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
69
|
+
| Document | What it covers |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| [Configuration](docs/CONFIGURATION.md) | source precedence, profiles, secrets, diagnostics |
|
|
72
|
+
| [CLI](docs/CLI.md) | command groups, output modes, exit codes, recipes |
|
|
73
|
+
| [Agents](docs/AGENTS.md) | registering agents, input modes, process handling, native adapters |
|
|
74
|
+
| [Pipelines](docs/PIPELINES.md) | pipeline definitions, step kinds, scheduling, results |
|
|
75
|
+
| [Agent Protocol v2](docs/PROTOCOL.md) | the interoperability spec external agents implement |
|
|
76
|
+
| [Providers](docs/PROVIDERS.md) | the provider contract, metadata, error normalization |
|
|
77
|
+
| [Memory](docs/MEMORY.md) | the memory contract, categories, retrieval, migration |
|
|
78
|
+
| [Reports](docs/REPORTS.md) | report schema, validation, aggregation, conflicts |
|
|
79
|
+
| [Persistence](docs/PERSISTENCE.md) | storage interfaces, durability, corruption, migration |
|
|
80
|
+
| [Security](docs/SECURITY.md) | secrets, process execution, trust model, sandbox boundary |
|
|
81
|
+
| [Testing](docs/TESTING.md) | the failure matrix and regression-test discipline |
|
|
82
|
+
| [Troubleshooting](docs/TROUBLESHOOTING.md) | symptom → cause → fix |
|
|
83
|
+
| [Migration](docs/MIGRATION.md) | v1 → v2 (compat, storage, config, protocol) |
|
|
84
|
+
| [Contributing](docs/CONTRIBUTING.md) | setup, workflow, release process |
|
|
85
|
+
| [Architecture](docs/ARCHITECTURE.md) | module map, workflow, execution states, audit |
|
|
86
|
+
| [API](docs/API.md) · [API stability](docs/API_STABILITY.md) · [Deprecations](docs/DEPRECATIONS.md) | the public surface and its guarantees |
|
|
87
|
+
| [CHANGELOG](CHANGELOG.md) · [v1 plan](docs/DEVELOPMENT_PLAN.md) · [v2 roadmap](docs/ROADMAP_V2.md) | history and plans |
|
|
267
88
|
|
|
268
|
-
|
|
89
|
+
## Roadmap
|
|
269
90
|
|
|
270
|
-
|
|
271
|
-
|
|
91
|
+
The v1 plan (phases 0–11) is complete and shipped as **v1.0.0** — see
|
|
92
|
+
[docs/DEVELOPMENT_PLAN.md](docs/DEVELOPMENT_PLAN.md). The v2 roadmap
|
|
93
|
+
(24 phases) is in progress — see [docs/ROADMAP_V2.md](docs/ROADMAP_V2.md):
|
|
272
94
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
95
|
+
| Version | Milestone |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| v0.1.0 – v0.10.0 | Foundation → end-to-end workflow |
|
|
98
|
+
| **v1.0.0** | Production Release (v1 plan complete) |
|
|
99
|
+
| **v2.0.0-alpha.N** | Reliability & interoperability line (phases 1–18 shipped) |
|
|
100
|
+
| v2.0.0 | Phases 19–24: package quality, performance, DX, CI/CD, migration tooling, final hardening |
|
|
277
101
|
|
|
278
|
-
|
|
279
|
-
omninode models
|
|
280
|
-
omninode models my-gateway --capability chat
|
|
102
|
+
Install prereleases with:
|
|
281
103
|
|
|
282
|
-
|
|
283
|
-
|
|
104
|
+
```bash
|
|
105
|
+
npm install -g @hilbras/omninode@next
|
|
284
106
|
```
|
|
285
107
|
|
|
286
|
-
|
|
287
|
-
|
|
108
|
+
Core architectural rule: OmniNode must run successfully with **zero Hilbras
|
|
109
|
+
dependencies**. OmniHilbras and Remembera make it more powerful, but neither is
|
|
110
|
+
required for the core engine.
|
|
111
|
+
|
|
112
|
+
## Install
|
|
288
113
|
|
|
289
114
|
```bash
|
|
290
|
-
|
|
291
|
-
|
|
115
|
+
npm install -g @hilbras/omninode # stable (v1.0.0)
|
|
116
|
+
npm install -g @hilbras/omninode@next # v2 prereleases
|
|
292
117
|
```
|
|
293
118
|
|
|
294
|
-
|
|
119
|
+
Or as a library: `npm install @hilbras/omninode`. Node.js 20+.
|
|
120
|
+
|
|
121
|
+
Prefer a container? `docker build -t omninode .` then
|
|
122
|
+
`docker run --rm -v "$PWD:/work" -w /work omninode run my-pipeline "audit the repo"`.
|
|
123
|
+
|
|
124
|
+
## Quick start
|
|
295
125
|
|
|
296
126
|
```bash
|
|
297
|
-
omninode
|
|
298
|
-
omninode
|
|
299
|
-
|
|
300
|
-
omninode
|
|
127
|
+
omninode init # writes omninode.yaml
|
|
128
|
+
omninode provider add --name my-gateway \
|
|
129
|
+
--base-url https://api.example.com/v1 --api-key-env-var MY_API_KEY
|
|
130
|
+
omninode agent add --name researcher --command some-agent --input-mode stdin
|
|
301
131
|
```
|
|
302
132
|
|
|
303
|
-
|
|
133
|
+
Describe the work as a pipeline — in `omninode.yaml`:
|
|
304
134
|
|
|
305
135
|
```yaml
|
|
306
136
|
project:
|
|
137
|
+
memory:
|
|
138
|
+
provider: local # or: remembera
|
|
139
|
+
planner:
|
|
140
|
+
kind: model
|
|
141
|
+
model: my-gateway:chatgpt
|
|
307
142
|
pipelines:
|
|
308
143
|
- id: repo-audit
|
|
309
144
|
steps:
|
|
310
|
-
- id: research
|
|
145
|
+
- id: research # independent analyses, run in parallel
|
|
311
146
|
kind: research
|
|
312
|
-
agents: [
|
|
313
|
-
- id: plan
|
|
147
|
+
agents: [researcher, second-opinion]
|
|
148
|
+
- id: plan # findings + memory → typed implementation plan
|
|
314
149
|
kind: plan
|
|
315
|
-
|
|
316
|
-
- id: execute
|
|
150
|
+
- id: execute # hand the plan to an execution agent
|
|
317
151
|
kind: execute
|
|
318
|
-
agent:
|
|
152
|
+
agent: researcher
|
|
319
153
|
```
|
|
320
154
|
|
|
321
|
-
|
|
322
|
-
omninode pipeline run repo-audit "Audit the authentication module"
|
|
323
|
-
omninode report combined # the aggregated intelligence of that run
|
|
324
|
-
omninode report show combined-xxx # grouped findings with per-source attribution
|
|
325
|
-
omninode plan show plan-xxx # the implementation plan the planner produced
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
The planner layer (§18) turns combined intelligence into an ordered,
|
|
329
|
-
actionable implementation plan. Configure it once:
|
|
330
|
-
|
|
331
|
-
```yaml
|
|
332
|
-
project:
|
|
333
|
-
planner:
|
|
334
|
-
kind: model # or heuristic for offline planning
|
|
335
|
-
model: my-gateway:chatgpt
|
|
336
|
-
```
|
|
155
|
+
…then run the whole loop in one command:
|
|
337
156
|
|
|
338
157
|
```bash
|
|
339
|
-
omninode
|
|
340
|
-
omninode status
|
|
341
|
-
omninode run repo-audit "Audit the authentication module" # the whole workflow
|
|
342
|
-
omninode pipeline retry run-xxxx # recover a failed run
|
|
343
|
-
omninode task retry task-yyyy --run # recover a failed task
|
|
158
|
+
omninode run repo-audit "Audit the authentication module"
|
|
344
159
|
```
|
|
345
160
|
|
|
346
|
-
Persistent memory (§19–§20) — opt in with `memory: { provider: local }` or
|
|
347
|
-
`provider: remembera` in `omninode.yaml`:
|
|
348
|
-
|
|
349
|
-
```bash
|
|
350
|
-
omninode memory status # provider + entry counts
|
|
351
|
-
omninode memory query "authentication jwt" # what the agents will see
|
|
352
|
-
omninode memory write "Decision: use rotating JWT secrets" --scope project --tags architecture
|
|
353
161
|
```
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
1. **Credentials never live in the file.** Reference environment variables with
|
|
363
|
-
`api_key_env_var: MY_API_KEY`; `${VAR}` / `${VAR:-fallback}` references anywhere
|
|
364
|
-
in the file are expanded at load time and unset variables abort loading.
|
|
365
|
-
2. **Unknown keys are rejected.** Typos fail loudly instead of being ignored.
|
|
366
|
-
|
|
367
|
-
## Development
|
|
368
|
-
|
|
369
|
-
```bash
|
|
370
|
-
npm run build # bundle with tsup (library + CLI)
|
|
371
|
-
npm test # run tests once
|
|
372
|
-
npm run test:watch # watch mode
|
|
373
|
-
npm run lint # eslint
|
|
374
|
-
npm run typecheck # tsc --noEmit
|
|
375
|
-
npm run format # prettier
|
|
162
|
+
[research] completed
|
|
163
|
+
[plan] completed
|
|
164
|
+
[execute] completed
|
|
165
|
+
reports: 2 structured report(s)
|
|
166
|
+
combined report: combined-m4f2
|
|
167
|
+
plan: plan-a91
|
|
168
|
+
result: Fixed JWT verification and added regression tests.
|
|
169
|
+
Pipeline completed. Run id: run-a91
|
|
376
170
|
```
|
|
377
171
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
Phases 0–11 are laid out in [docs/DEVELOPMENT_PLAN.md](docs/DEVELOPMENT_PLAN.md):
|
|
381
|
-
|
|
382
|
-
| Version | Milestone |
|
|
383
|
-
| --- | --- |
|
|
384
|
-
| v0.1.0 | Foundation |
|
|
385
|
-
| v0.2.0 | Provider System |
|
|
386
|
-
| v0.3.0 | OmniHilbras Integration (optional, like every provider) |
|
|
387
|
-
| v0.4.0 | Agent System |
|
|
388
|
-
| v0.5.0 | Roles & Tasks |
|
|
389
|
-
| v0.6.0 | Pipeline Engine |
|
|
390
|
-
| v0.7.0 | Multi-AI Reports |
|
|
391
|
-
| v0.8.0 | Remembera / Memory |
|
|
392
|
-
| v0.9.0 | Planner |
|
|
393
|
-
| v0.10.0 | End-to-End Workflow (current) |
|
|
394
|
-
| **v1.0.0** | **Production Release — Phases 10 + 11 (current, final)** |
|
|
395
|
-
|
|
396
|
-
Core architectural rule: OmniNode must run successfully with **zero Hilbras
|
|
397
|
-
dependencies**. OmniHilbras and Remembera make it more powerful, but neither is
|
|
398
|
-
required for the core engine.
|
|
399
|
-
|
|
400
|
-
## Documentation
|
|
401
|
-
|
|
402
|
-
- [Development plan](docs/DEVELOPMENT_PLAN.md) — the full 12-phase roadmap
|
|
403
|
-
- [Architecture](docs/ARCHITECTURE.md) — module map, workflow, local state
|
|
404
|
-
- [Security model](docs/SECURITY.md) — secrets, process execution, env isolation, audit log
|
|
405
|
-
- [API stability policy](docs/API_STABILITY.md) and [public API inventory](docs/API.md)
|
|
406
|
-
- [Configuration](docs/CONFIGURATION.md) · [Testing & failure matrix](docs/TESTING.md) · [CLI guide](docs/CLI.md) · [Agent Protocol v2 spec](docs/PROTOCOL.md) · [Providers](docs/PROVIDERS.md) · [Memory](docs/MEMORY.md) · [Reports](docs/REPORTS.md) · [Persistence](docs/PERSISTENCE.md) · [Deprecations](docs/DEPRECATIONS.md) · [Changelog](CHANGELOG.md) · [v2 roadmap](docs/ROADMAP_V2.md)
|
|
407
|
-
- [Example project](examples/demo/) — a runnable end-to-end demo (`./demo.sh`)
|
|
408
|
-
|
|
409
|
-
Prefer a container? `docker build -t omninode .` then
|
|
410
|
-
`docker run --rm -v "$PWD:/work" -w /work omninode run my-pipeline "audit the repo"`.
|
|
411
|
-
|
|
412
|
-
## Install
|
|
172
|
+
Inspect what happened, in text or JSON:
|
|
413
173
|
|
|
414
174
|
```bash
|
|
415
|
-
|
|
175
|
+
omninode pipeline inspect run-a91
|
|
176
|
+
omninode report combined
|
|
177
|
+
omninode plan show plan-a91
|
|
178
|
+
omninode task inspect task-… --json | jq .
|
|
179
|
+
omninode audit -n 50
|
|
416
180
|
```
|
|
417
181
|
|
|
418
|
-
|
|
182
|
+
Prefer to start from something runnable? [`examples/demo/`](examples/demo/)
|
|
183
|
+
contains a complete project and `./demo.sh` that exercises the full loop with
|
|
184
|
+
agents that need no external tools.
|
|
419
185
|
|
|
420
186
|
## Connecting OmniHilbras
|
|
421
187
|
|
package/dist/cli/index.js
CHANGED