omnius 1.0.675 → 1.0.677
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/.aiwg/addons/omnius-docs/README.md +4 -4
- package/.aiwg/addons/omnius-docs/skills/omnius-docs/SKILL.md +1 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-tools-docs/SKILL.md +13 -6
- package/README.md +9 -0
- package/dist/index.js +300 -23
- package/docs/.vitepress/config.mts +1 -0
- package/docs/ADJUDICATION.md +46 -1
- package/docs/DISCOVERY.json +242 -0
- package/docs/DISCOVERY.md +2 -0
- package/docs/agent-memory/INDEX.md +4 -0
- package/docs/discovery/agent-map.json +2 -0
- package/docs/discovery/catalog-overrides.json +44 -0
- package/docs/guides/tools-and-web-search.md +35 -0
- package/docs/index.md +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/docs/ADJUDICATION.md
CHANGED
|
@@ -15,6 +15,46 @@ The host validates all identifiers, citations, panel results, and the verdict.
|
|
|
15
15
|
The tool holds the case when it cannot validate the required quorum or final
|
|
16
16
|
contract. It does not guess a result.
|
|
17
17
|
|
|
18
|
+
## Clean-context purpose
|
|
19
|
+
|
|
20
|
+
The main agent context can contain old plans, persuasive language, stale
|
|
21
|
+
assumptions, and momentum from work that happened before the current decision.
|
|
22
|
+
`adjudicate` does not pass that transcript into the panel. The parent must first
|
|
23
|
+
freeze one explicit admissible record. Each constituent starts in a fresh
|
|
24
|
+
context and receives only its assignment, the relevant record subset, and the
|
|
25
|
+
decision rules. The judge receives the immutable record and validated public
|
|
26
|
+
findings. It does not receive the parent's accumulated narrative.
|
|
27
|
+
|
|
28
|
+
This boundary reduces anchoring and accidental context contamination. It does
|
|
29
|
+
not guarantee an unbiased decision. Record selection, question framing,
|
|
30
|
+
decision rules, and model behavior can still influence the result. The receipt
|
|
31
|
+
makes those inputs, exclusions, validation failures, findings, and dissent
|
|
32
|
+
auditable instead of hiding them in the parent context.
|
|
33
|
+
|
|
34
|
+
## Availability
|
|
35
|
+
|
|
36
|
+
`adjudicate` is an agent-bound tool in each top-level full-agent path:
|
|
37
|
+
|
|
38
|
+
| Surface | Execution | Progress projection |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| Interactive `omnius` TUI | Yes | Specialized streamed adjudication block |
|
|
41
|
+
| One-shot `omnius "<task>"` | Yes | Ordinary tool events and final result |
|
|
42
|
+
| `POST /v1/run` | Yes, subject to the selected tool profile | Run events and final result |
|
|
43
|
+
| Default full-agent `POST /v1/chat` | Yes, subject to the selected tool profile | Chat/run events and final result |
|
|
44
|
+
|
|
45
|
+
The tool is intentionally unavailable to child agents. This prevents nested
|
|
46
|
+
panels, recursive terminal projections, and unbounded inference fan-out.
|
|
47
|
+
Constituents are isolated tools-free inference contexts inside the
|
|
48
|
+
adjudication engine. They are not `full_sub_agent` workers, so an empty
|
|
49
|
+
sub-agent activity list does not indicate that panel fan-out was skipped.
|
|
50
|
+
|
|
51
|
+
The daemon direct-tool registry, `/v1/chat/completions` bounded mini-loop,
|
|
52
|
+
Telegram runners, and voice-call runners do not expose the native tool. Do not
|
|
53
|
+
infer `GET /v1/tools/adjudicate` or
|
|
54
|
+
`POST /v1/tools/adjudicate/call` from the tool name. A caller-supplied OpenAI
|
|
55
|
+
tool with the same name is not the native Omnius implementation. Use
|
|
56
|
+
`omnius show tool.adjudicate` for the static discovery contract.
|
|
57
|
+
|
|
18
58
|
## When to use it
|
|
19
59
|
|
|
20
60
|
Use `adjudicate` when all of these conditions are true:
|
|
@@ -23,7 +63,7 @@ Use `adjudicate` when all of these conditions are true:
|
|
|
23
63
|
- Two or more outcomes remain materially plausible.
|
|
24
64
|
- The decision affects the next action.
|
|
25
65
|
- The available evidence conflicts or supports different risk tradeoffs.
|
|
26
|
-
- A fresh,
|
|
66
|
+
- A fresh, evidence-scoped context can assess the decision more reliably than the
|
|
27
67
|
main loop's large working context.
|
|
28
68
|
|
|
29
69
|
Do not use it for an ordinary implementation choice, a factual lookup, or a
|
|
@@ -161,6 +201,11 @@ The host rejects unknown IDs and incomplete evidence coverage. It retries one
|
|
|
161
201
|
time with validation codes only. The invalid model output is not added to the
|
|
162
202
|
repair prompt.
|
|
163
203
|
|
|
204
|
+
Planner, constituent, and judge requests use strict provider JSON Schemas.
|
|
205
|
+
When a visible response still fails host validation, the receipt retains
|
|
206
|
+
bounded field-level issue codes, a response hash, and a content-free top-level
|
|
207
|
+
shape summary. It does not retain the rejected response body.
|
|
208
|
+
|
|
164
209
|
### 3. Constituent fan-out
|
|
165
210
|
|
|
166
211
|
The host runs assignments with bounded concurrency. Each constituent gets a
|
package/docs/DISCOVERY.json
CHANGED
|
@@ -70,6 +70,11 @@
|
|
|
70
70
|
"query": "web search tool exposure agent bound",
|
|
71
71
|
"expand": "workflow.agent-bound-tools"
|
|
72
72
|
},
|
|
73
|
+
{
|
|
74
|
+
"intent": "Resolve an evidence-based decision impasse",
|
|
75
|
+
"query": "adjudicate impartial evidence quorum verdict",
|
|
76
|
+
"expand": "workflow.evidence-bound-adjudication"
|
|
77
|
+
},
|
|
73
78
|
{
|
|
74
79
|
"intent": "Debug a stale or unhealthy daemon",
|
|
75
80
|
"query": "daemon version port logs health debug",
|
|
@@ -36078,6 +36083,125 @@
|
|
|
36078
36083
|
"packages/cli/src/tui/omnius-directory.ts"
|
|
36079
36084
|
]
|
|
36080
36085
|
},
|
|
36086
|
+
{
|
|
36087
|
+
"id": "tool.adjudicate",
|
|
36088
|
+
"kind": "tool",
|
|
36089
|
+
"title": "Evidence-bound adjudication",
|
|
36090
|
+
"summary": "Resolve one genuine decision impasse outside the accumulated parent narrative through a frozen evidence record, fresh scoped constituent review, host-validated citations and quorum, a final judge, and a durable verdict receipt.",
|
|
36091
|
+
"aliases": [
|
|
36092
|
+
"adjudicate",
|
|
36093
|
+
"adjudication",
|
|
36094
|
+
"decision impasse",
|
|
36095
|
+
"impartial decision",
|
|
36096
|
+
"evidence-bound decision"
|
|
36097
|
+
],
|
|
36098
|
+
"keywords": [
|
|
36099
|
+
"agent-bound",
|
|
36100
|
+
"impasse",
|
|
36101
|
+
"evidence",
|
|
36102
|
+
"constituents",
|
|
36103
|
+
"quorum",
|
|
36104
|
+
"judge",
|
|
36105
|
+
"verdict",
|
|
36106
|
+
"dissent"
|
|
36107
|
+
],
|
|
36108
|
+
"maturity": "stable",
|
|
36109
|
+
"layer": "orchestration",
|
|
36110
|
+
"audiences": [
|
|
36111
|
+
"coding-agent",
|
|
36112
|
+
"maintainer",
|
|
36113
|
+
"interactive-user"
|
|
36114
|
+
],
|
|
36115
|
+
"direct_callable": false,
|
|
36116
|
+
"use_when": [
|
|
36117
|
+
"A top-level full agent has one exact unresolved decision with at least two materially plausible outcomes",
|
|
36118
|
+
"The admissible evidence supports conflicting conclusions or risk tradeoffs",
|
|
36119
|
+
"The decision changes the next action and benefits from fresh evidence-scoped review that reduces parent-context anchoring",
|
|
36120
|
+
"The caller can make record selection and framing explicit and auditable"
|
|
36121
|
+
],
|
|
36122
|
+
"avoid_when": [
|
|
36123
|
+
"The question is an ordinary implementation choice, factual lookup, or substitute for gathering missing evidence",
|
|
36124
|
+
"The caller is a child agent, daemon direct-tool client, bounded /v1/chat/completions loop, Telegram runner, or voice-call runner"
|
|
36125
|
+
],
|
|
36126
|
+
"interfaces": [
|
|
36127
|
+
{
|
|
36128
|
+
"type": "tui-agent-tool",
|
|
36129
|
+
"target": "omnius",
|
|
36130
|
+
"description": "Top-level interactive agent with the specialized streamed adjudication block"
|
|
36131
|
+
},
|
|
36132
|
+
{
|
|
36133
|
+
"type": "cli-agent-tool",
|
|
36134
|
+
"target": "omnius \"<task>\"",
|
|
36135
|
+
"description": "Top-level one-shot agent with ordinary tool events"
|
|
36136
|
+
},
|
|
36137
|
+
{
|
|
36138
|
+
"type": "agent-run",
|
|
36139
|
+
"target": "POST /v1/run",
|
|
36140
|
+
"description": "Spawned top-level full agent; subject to the active tool profile"
|
|
36141
|
+
},
|
|
36142
|
+
{
|
|
36143
|
+
"type": "agent-chat",
|
|
36144
|
+
"target": "POST /v1/chat",
|
|
36145
|
+
"description": "Default full-agent chat mode; subject to the active tool profile"
|
|
36146
|
+
}
|
|
36147
|
+
],
|
|
36148
|
+
"references": [
|
|
36149
|
+
{
|
|
36150
|
+
"type": "guide",
|
|
36151
|
+
"target": "docs/ADJUDICATION.md",
|
|
36152
|
+
"relation": "canonical-guide"
|
|
36153
|
+
},
|
|
36154
|
+
{
|
|
36155
|
+
"type": "source",
|
|
36156
|
+
"target": "packages/orchestrator/src/adjudication.ts",
|
|
36157
|
+
"relation": "implementation"
|
|
36158
|
+
},
|
|
36159
|
+
{
|
|
36160
|
+
"type": "source",
|
|
36161
|
+
"target": "packages/cli/src/tui/interactive.ts",
|
|
36162
|
+
"relation": "top-level-registration"
|
|
36163
|
+
},
|
|
36164
|
+
{
|
|
36165
|
+
"type": "source",
|
|
36166
|
+
"target": "packages/cli/src/tui/adjudication-live-block.ts",
|
|
36167
|
+
"relation": "live-projection"
|
|
36168
|
+
}
|
|
36169
|
+
],
|
|
36170
|
+
"related": [
|
|
36171
|
+
"workflow.evidence-bound-adjudication",
|
|
36172
|
+
"layer.orchestration",
|
|
36173
|
+
"layer.observability",
|
|
36174
|
+
"module.orchestrator",
|
|
36175
|
+
"guide.adjudication-uppercase"
|
|
36176
|
+
],
|
|
36177
|
+
"verification": [
|
|
36178
|
+
{
|
|
36179
|
+
"check": "Run pnpm harness:adjudication",
|
|
36180
|
+
"expected": "Parallel constituent streams, judge synthesis, and a durable receipt complete without loading a real model"
|
|
36181
|
+
},
|
|
36182
|
+
{
|
|
36183
|
+
"check": "Inspect the parent-runner and child-agent tool registration tests",
|
|
36184
|
+
"expected": "Top-level full agents keep adjudicate inline and host scope enforcement excludes it from child runners"
|
|
36185
|
+
}
|
|
36186
|
+
],
|
|
36187
|
+
"failure_modes": [
|
|
36188
|
+
{
|
|
36189
|
+
"symptom": "A caller attempts /v1/tools/adjudicate/call",
|
|
36190
|
+
"likely_cause": "Static tool discovery was mistaken for daemon direct-tool exposure",
|
|
36191
|
+
"recovery": "Use a top-level TUI, one-shot CLI, /v1/run, or default full-agent /v1/chat path"
|
|
36192
|
+
},
|
|
36193
|
+
{
|
|
36194
|
+
"symptom": "The case returns held instead of a verdict",
|
|
36195
|
+
"likely_cause": "Admission, citation validation, quorum, or final verdict validation failed",
|
|
36196
|
+
"recovery": "Inspect the receipt and provide a corrected admissible record; do not infer a decision"
|
|
36197
|
+
}
|
|
36198
|
+
],
|
|
36199
|
+
"source_of_truth": [
|
|
36200
|
+
"docs/ADJUDICATION.md",
|
|
36201
|
+
"packages/orchestrator/src/adjudication.ts",
|
|
36202
|
+
"packages/cli/src/tui/interactive.ts"
|
|
36203
|
+
]
|
|
36204
|
+
},
|
|
36081
36205
|
{
|
|
36082
36206
|
"id": "tool.agenda",
|
|
36083
36207
|
"kind": "tool",
|
|
@@ -44015,6 +44139,124 @@
|
|
|
44015
44139
|
"packages/execution/src/tools/tool-manifest.ts"
|
|
44016
44140
|
]
|
|
44017
44141
|
},
|
|
44142
|
+
{
|
|
44143
|
+
"id": "workflow.evidence-bound-adjudication",
|
|
44144
|
+
"kind": "workflow",
|
|
44145
|
+
"title": "Resolve an evidence-bound decision impasse",
|
|
44146
|
+
"summary": "Freeze one exact decision record outside the accumulated parent narrative, run fresh evidence-scoped constituent review, validate citations and quorum, synthesize a verdict through a final judge, and preserve an auditable durable receipt without granting the panel tools or mutation authority.",
|
|
44147
|
+
"aliases": [
|
|
44148
|
+
"adjudicate impasse",
|
|
44149
|
+
"impartial review",
|
|
44150
|
+
"decision court",
|
|
44151
|
+
"constituent panel"
|
|
44152
|
+
],
|
|
44153
|
+
"keywords": [
|
|
44154
|
+
"evidence",
|
|
44155
|
+
"arguments",
|
|
44156
|
+
"quorum",
|
|
44157
|
+
"judge",
|
|
44158
|
+
"verdict",
|
|
44159
|
+
"dissent",
|
|
44160
|
+
"receipt",
|
|
44161
|
+
"anchoring"
|
|
44162
|
+
],
|
|
44163
|
+
"maturity": "stable",
|
|
44164
|
+
"layer": "orchestration",
|
|
44165
|
+
"audiences": [
|
|
44166
|
+
"coding-agent",
|
|
44167
|
+
"maintainer",
|
|
44168
|
+
"interactive-user"
|
|
44169
|
+
],
|
|
44170
|
+
"prerequisites": [
|
|
44171
|
+
"Top-level full-agent TUI, one-shot CLI, /v1/run, or default /v1/chat path",
|
|
44172
|
+
"One exact unresolved decision",
|
|
44173
|
+
"At least two allowed outcomes",
|
|
44174
|
+
"Caller-supplied admissible evidence"
|
|
44175
|
+
],
|
|
44176
|
+
"inputs": [
|
|
44177
|
+
"question",
|
|
44178
|
+
"allowed outcomes",
|
|
44179
|
+
"evidence",
|
|
44180
|
+
"optional arguments, decision rules, burden, constituents, and quorum"
|
|
44181
|
+
],
|
|
44182
|
+
"outputs": [
|
|
44183
|
+
"validated findings",
|
|
44184
|
+
"verdict or held status",
|
|
44185
|
+
"durable receipt"
|
|
44186
|
+
],
|
|
44187
|
+
"workflow": [
|
|
44188
|
+
{
|
|
44189
|
+
"step": "1",
|
|
44190
|
+
"action": "Confirm that a genuine impasse exists and submit an immutable record with stable evidence and argument IDs.",
|
|
44191
|
+
"expected": "Host admission succeeds and creates a record hash"
|
|
44192
|
+
},
|
|
44193
|
+
{
|
|
44194
|
+
"step": "2",
|
|
44195
|
+
"action": "Frame or validate distinct constituent assignments with explicit evidence subsets.",
|
|
44196
|
+
"expected": "Every admitted evidence item is covered without unknown IDs"
|
|
44197
|
+
},
|
|
44198
|
+
{
|
|
44199
|
+
"step": "3",
|
|
44200
|
+
"action": "Run tools-free constituent assessments in fresh scoped contexts that do not receive the parent transcript.",
|
|
44201
|
+
"expected": "Public findings cite only assigned evidence"
|
|
44202
|
+
},
|
|
44203
|
+
{
|
|
44204
|
+
"step": "4",
|
|
44205
|
+
"action": "Validate findings and require quorum before invoking the judge.",
|
|
44206
|
+
"expected": "Invalid findings cannot create facts or satisfy quorum"
|
|
44207
|
+
},
|
|
44208
|
+
{
|
|
44209
|
+
"step": "5",
|
|
44210
|
+
"action": "Have the judge apply the burden and rules to the immutable record and validated findings, preserve material dissent, and select an allowed outcome or insufficient_evidence.",
|
|
44211
|
+
"expected": "A host-validated verdict or held case"
|
|
44212
|
+
},
|
|
44213
|
+
{
|
|
44214
|
+
"step": "6",
|
|
44215
|
+
"action": "Inspect the available run events and durable receipt before acting on the decision.",
|
|
44216
|
+
"expected": "The decision and remaining framing risks are traceable to the admitted record, validated findings, and receipt hashes"
|
|
44217
|
+
}
|
|
44218
|
+
],
|
|
44219
|
+
"avoid_when": [
|
|
44220
|
+
"Using adjudication to replace normal judgment, gather evidence, or let a child agent spawn nested panels",
|
|
44221
|
+
"Treating clean contexts as a guarantee against biased record selection, framing, rules, or model behavior",
|
|
44222
|
+
"Inferring a direct registry, /v1/chat/completions, Telegram, voice, or child-agent exposure that is not registered"
|
|
44223
|
+
],
|
|
44224
|
+
"verification": [
|
|
44225
|
+
{
|
|
44226
|
+
"check": "Run pnpm harness:adjudication",
|
|
44227
|
+
"expected": "The deterministic panel overlaps constituent work, streams attributed assessments, synthesizes a verdict, and persists a receipt"
|
|
44228
|
+
},
|
|
44229
|
+
{
|
|
44230
|
+
"check": "Inspect .omnius/adjudications/<case-id>/<run>/receipt.json",
|
|
44231
|
+
"expected": "Hashes, quorum, validation failures, elapsed time, and final status are present"
|
|
44232
|
+
}
|
|
44233
|
+
],
|
|
44234
|
+
"failure_modes": [
|
|
44235
|
+
{
|
|
44236
|
+
"symptom": "The case is held before judgment",
|
|
44237
|
+
"likely_cause": "The record, framing, findings, or quorum failed host validation",
|
|
44238
|
+
"recovery": "Use receipt validation codes to correct the admissible record; do not guess an outcome"
|
|
44239
|
+
},
|
|
44240
|
+
{
|
|
44241
|
+
"symptom": "A direct REST call is attempted",
|
|
44242
|
+
"likely_cause": "Agent-bound full-agent exposure was confused with direct registry exposure",
|
|
44243
|
+
"recovery": "Use top-level TUI, one-shot CLI, /v1/run, or default full-agent /v1/chat"
|
|
44244
|
+
}
|
|
44245
|
+
],
|
|
44246
|
+
"source_of_truth": [
|
|
44247
|
+
"docs/ADJUDICATION.md",
|
|
44248
|
+
"packages/orchestrator/src/adjudication.ts",
|
|
44249
|
+
"packages/cli/src/tui/interactive.ts",
|
|
44250
|
+
"scripts/adjudication-impasse-harness.mjs"
|
|
44251
|
+
],
|
|
44252
|
+
"related": [
|
|
44253
|
+
"tool.adjudicate",
|
|
44254
|
+
"layer.orchestration",
|
|
44255
|
+
"layer.observability",
|
|
44256
|
+
"module.orchestrator",
|
|
44257
|
+
"guide.adjudication-uppercase"
|
|
44258
|
+
]
|
|
44259
|
+
},
|
|
44018
44260
|
{
|
|
44019
44261
|
"id": "workflow.extend-omnius",
|
|
44020
44262
|
"kind": "workflow",
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -648,6 +648,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
648
648
|
|
|
649
649
|
| ID | Title | Summary |
|
|
650
650
|
| --- | --- | --- |
|
|
651
|
+
| `tool.adjudicate` | Evidence-bound adjudication | Resolve one genuine decision impasse outside the accumulated parent narrative through a frozen evidence record, fresh scoped constituent review, host-validated citations and quorum, a final judge, and a durable verdict receipt. |
|
|
651
652
|
| `tool.agenda` | Agenda | agenda is a directly callable Omnius tool. |
|
|
652
653
|
| `tool.agent` | Agent | agent is a directly callable Omnius tool. |
|
|
653
654
|
| `tool.aiwg-health` | Aiwg Health | aiwg_health is a directly callable Omnius tool. |
|
|
@@ -793,6 +794,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
793
794
|
| `workflow.daemon-tray-update` | Operate daemon, tray, and updates | Ensure one current daemon owns the service port, start the tray against it, install updates through the real global npm flow, stream progress, restart components, and verify the target runtime. |
|
|
794
795
|
| `workflow.debug-runtime` | Debug an Omnius runtime failure | Diagnose from identity and ownership outward: version, health, port/process, live contract, status/events, state scope, logs/evidence, then the owning module. |
|
|
795
796
|
| `workflow.direct-tool-call` | Call a directly exposed tool | Inspect live metadata, confirm direct-call exposure and safety, submit the exact schema, and verify the tool result. |
|
|
797
|
+
| `workflow.evidence-bound-adjudication` | Resolve an evidence-bound decision impasse | Freeze one exact decision record outside the accumulated parent narrative, run fresh evidence-scoped constituent review, validate citations and quorum, synthesize a verdict through a final judge, and preserve an auditable durable receipt without granting the panel tools or mutation authority. |
|
|
796
798
|
| `workflow.extend-omnius` | Extend or modify Omnius safely | Locate the owning layer/module and canonical registry, change the smallest source boundary, update discovery/docs/contracts, and run targeted plus freshness tests. |
|
|
797
799
|
| `workflow.provider-selection` | Select an inference provider and model | Resolve an explicit provider protocol, credentials, endpoint, and model; verify live reachability and hardware placement for local inference. |
|
|
798
800
|
| `workflow.publish-package` | Build and publish the Omnius package | Follow the repository Minimal Publish SOP: clean all workspaces, rebuild, bundle publish/, inspect a local-cache tarball, patch-bump, publish only from publish/, and verify npm metadata. |
|
|
@@ -9,6 +9,10 @@ Omnius documentation is exposed to agents through project-local AIWG-style bundl
|
|
|
9
9
|
| `omnius-docs` | General Omnius docs entrypoint and feature guides |
|
|
10
10
|
| `omnius-rest-docs` | REST API docs entrypoint and endpoint-family map |
|
|
11
11
|
|
|
12
|
+
Evidence-bound decision questions route through `omnius-tools-docs` to
|
|
13
|
+
`docs/ADJUDICATION.md`. The catalog entry is `tool.adjudicate`; the operational
|
|
14
|
+
workflow is `workflow.evidence-bound-adjudication`.
|
|
15
|
+
|
|
12
16
|
## Agent Use Pattern
|
|
13
17
|
|
|
14
18
|
1. Run `omnius discover "<need>"` or search `GET /v1/discovery`.
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
{"intent": "Run a long coding task asynchronously", "query": "long horizon coding REST run poll cancel", "expand": "workflow.async-agent-run"},
|
|
30
30
|
{"intent": "Understand where state is stored", "query": "project global state sessions memory config", "expand": "store.project"},
|
|
31
31
|
{"intent": "Use web search", "query": "web search tool exposure agent bound", "expand": "workflow.agent-bound-tools"},
|
|
32
|
+
{"intent": "Resolve an evidence-based decision impasse", "query": "adjudicate impartial evidence quorum verdict", "expand": "workflow.evidence-bound-adjudication"},
|
|
32
33
|
{"intent": "Debug a stale or unhealthy daemon", "query": "daemon version port logs health debug", "expand": "workflow.debug-runtime"},
|
|
33
34
|
{"intent": "Add or change Omnius code", "query": "module ownership extend command endpoint tool", "expand": "workflow.extend-omnius"}
|
|
34
35
|
],
|
|
@@ -109,6 +110,7 @@
|
|
|
109
110
|
{"id":"workflow.stateful-chat","kind":"workflow","title":"Use stateful daemon chat","summary":"Create or select a real chat session, send conversational turns, and load its history without treating control commands such as /quit as chats.","aliases":["chat sessions","history"],"keywords":["session","conversation","history"],"maturity":"stable","layer":"memory","audiences":["integrator","service-agent"],"workflow":[{"step":"1","action":"List or create sessions through the documented chat/session routes.","interface":"GET /v1/chats and chat creation route"},{"step":"2","action":"Send user content through POST /v1/chat with the selected session identity.","interface":"POST /v1/chat"},{"step":"3","action":"Load message history when selecting the session and distinguish UI/control events from conversational turns.","expected":"The selected chat displays its saved conversation"}],"verification":[{"check":"Reload the selected session","expected":"History is restored and control-only commands are absent from the chat list"}],"failure_modes":[{"symptom":"Chats named quit or duplicate Last task summaries appear","likely_cause":"Control/task metadata was projected as a chat session","recovery":"Use the canonical session registry and filter non-conversational control records"}],"source_of_truth":["packages/cli/src/api/chat-session.ts","packages/cli/src/api/session-summary.ts","packages/cli/src/api/web-ui.ts"]},
|
|
110
111
|
{"id":"workflow.direct-tool-call","kind":"workflow","title":"Call a directly exposed tool","summary":"Inspect live metadata, confirm direct-call exposure and safety, submit the exact schema, and verify the tool result.","aliases":["tool REST call"],"keywords":["direct_callable","schema"],"maturity":"stable","layer":"execution","audiences":["integrator","service-agent"],"workflow":[{"step":"1","action":"Inspect the tool metadata and direct_callable flag.","interface":"GET /v1/tools/{name}","expected":"A rest-call interface is explicitly present"},{"step":"2","action":"Validate arguments against the returned parameter schema and call the exact route.","interface":"POST /v1/tools/{name}/call"},{"step":"3","action":"Inspect the structured output and any side effects.","expected":"Tool-specific verified result"}],"avoid_when":["The tool is agent-bound, unavailable, profile-gated, or lacks a rest-call interface"],"verification":[{"check":"Metadata, schema, and result all agree","expected":"No inferred route or unvalidated arguments"}],"failure_modes":[{"symptom":"Direct call returns not found or not callable","likely_cause":"The route was inferred or live exposure changed","recovery":"Re-read GET /v1/tools/{name}; use an agent-bound workflow when no rest-call interface exists"}],"source_of_truth":["packages/cli/src/api/direct-tool-registry.ts","packages/execution/src/tools/tool-manifest.ts"]},
|
|
111
112
|
{"id":"workflow.agent-bound-tools","kind":"workflow","title":"Use agent-bound tools such as web_search","summary":"Offer a non-direct tool to an Omnius agent loop through run/chat instead of inventing a direct REST call.","aliases":["web search","daemon tools"],"keywords":["agent loop","web_search","tool exposure"],"maturity":"stable","layer":"execution","audiences":["integrator","coding-agent"],"workflow":[{"step":"1","action":"Inspect live tool metadata, security classification, availability, and schema.","interface":"GET /v1/tools/web_search"},{"step":"2","action":"Offer the tool through an agent-capable surface and a compatible tool profile.","interface":"POST /v1/run or POST /v1/chat/completions with agent_loop=true"},{"step":"3","action":"Require source/provenance verification appropriate to the research task.","expected":"The agent executes the bound tool and returns evidence"}],"avoid_when":["Calling POST /v1/tools/web_search/call unless live metadata explicitly adds direct exposure"],"verification":[{"check":"Inspect run/chat tool events and returned source evidence","expected":"The intended tool actually ran and its claims are traceable"}],"failure_modes":[{"symptom":"Direct tool URL is missing","likely_cause":"The tool is intentionally agent-bound","recovery":"Use /v1/run or agent-loop chat with the tool offered"}],"source_of_truth":["docs/guides/tools-and-web-search.md","packages/execution/src/tools/web-search.ts"]},
|
|
113
|
+
{"id":"workflow.evidence-bound-adjudication","kind":"workflow","title":"Resolve an evidence-bound decision impasse","summary":"Freeze one exact decision record outside the accumulated parent narrative, run fresh evidence-scoped constituent review, validate citations and quorum, synthesize a verdict through a final judge, and preserve an auditable durable receipt without granting the panel tools or mutation authority.","aliases":["adjudicate impasse","impartial review","decision court","constituent panel"],"keywords":["evidence","arguments","quorum","judge","verdict","dissent","receipt","anchoring"],"maturity":"stable","layer":"orchestration","audiences":["coding-agent","maintainer","interactive-user"],"prerequisites":["Top-level full-agent TUI, one-shot CLI, /v1/run, or default /v1/chat path","One exact unresolved decision","At least two allowed outcomes","Caller-supplied admissible evidence"],"inputs":["question","allowed outcomes","evidence","optional arguments, decision rules, burden, constituents, and quorum"],"outputs":["validated findings","verdict or held status","durable receipt"],"workflow":[{"step":"1","action":"Confirm that a genuine impasse exists and submit an immutable record with stable evidence and argument IDs.","expected":"Host admission succeeds and creates a record hash"},{"step":"2","action":"Frame or validate distinct constituent assignments with explicit evidence subsets.","expected":"Every admitted evidence item is covered without unknown IDs"},{"step":"3","action":"Run tools-free constituent assessments in fresh scoped contexts that do not receive the parent transcript.","expected":"Public findings cite only assigned evidence"},{"step":"4","action":"Validate findings and require quorum before invoking the judge.","expected":"Invalid findings cannot create facts or satisfy quorum"},{"step":"5","action":"Have the judge apply the burden and rules to the immutable record and validated findings, preserve material dissent, and select an allowed outcome or insufficient_evidence.","expected":"A host-validated verdict or held case"},{"step":"6","action":"Inspect the available run events and durable receipt before acting on the decision.","expected":"The decision and remaining framing risks are traceable to the admitted record, validated findings, and receipt hashes"}],"avoid_when":["Using adjudication to replace normal judgment, gather evidence, or let a child agent spawn nested panels","Treating clean contexts as a guarantee against biased record selection, framing, rules, or model behavior","Inferring a direct registry, /v1/chat/completions, Telegram, voice, or child-agent exposure that is not registered"],"verification":[{"check":"Run pnpm harness:adjudication","expected":"The deterministic panel overlaps constituent work, streams attributed assessments, synthesizes a verdict, and persists a receipt"},{"check":"Inspect .omnius/adjudications/<case-id>/<run>/receipt.json","expected":"Hashes, quorum, validation failures, elapsed time, and final status are present"}],"failure_modes":[{"symptom":"The case is held before judgment","likely_cause":"The record, framing, findings, or quorum failed host validation","recovery":"Use receipt validation codes to correct the admissible record; do not guess an outcome"},{"symptom":"A direct REST call is attempted","likely_cause":"Agent-bound full-agent exposure was confused with direct registry exposure","recovery":"Use top-level TUI, one-shot CLI, /v1/run, or default full-agent /v1/chat"}],"source_of_truth":["docs/ADJUDICATION.md","packages/orchestrator/src/adjudication.ts","packages/cli/src/tui/interactive.ts","scripts/adjudication-impasse-harness.mjs"],"related":["tool.adjudicate","layer.orchestration","layer.observability","module.orchestrator","guide.adjudication-uppercase"]},
|
|
112
114
|
{"id":"workflow.provider-selection","kind":"workflow","title":"Select an inference provider and model","summary":"Resolve an explicit provider protocol, credentials, endpoint, and model; verify live reachability and hardware placement for local inference.","aliases":["BYOI","model selection"],"keywords":["provider","endpoint","protocol"],"maturity":"stable","layer":"inference","audiences":["operator","integrator","coding-agent"],"workflow":[{"step":"1","action":"Discover and expand the provider descriptor; do not infer protocol from a label or API key."},{"step":"2","action":"Configure endpoint/protocol/credential using the documented scope."},{"step":"3","action":"For local model work, perform the required hardware preflight before any token-generating request."},{"step":"4","action":"Verify the selected provider and exact model through live metadata."}],"verification":[{"check":"Live model/provider status matches the intended endpoint, protocol, and hardware","expected":"No silent fallback"}],"failure_modes":[{"symptom":"Model listing works but inference fails or uses the wrong protocol","likely_cause":"Endpoint display label was used instead of the provider descriptor","recovery":"Resolve the stable provider ID/protocol and re-test the exact endpoint before execution"}],"source_of_truth":["packages/backend-vllm/src/providerRegistry.ts","docs/guides/bring-your-own-inference.md"]},
|
|
113
115
|
{"id":"workflow.voice-asr-tts","kind":"workflow","title":"Select and use ASR/TTS engines","summary":"Discover installed and supported ASR/TTS systems, perform managed setup when needed, activate one exact engine/model/device, and use the documented REST or TUI surface.","aliases":["speech","voice engines"],"keywords":["ASR","TTS","VibeVoice","transcribe_cli","LuxTTS"],"maturity":"stable","layer":"media","audiences":["integrator","operator","user"],"workflow":[{"step":"1","action":"List engines/models and inspect status before activation.","interface":"GET /v1/asr/engines; GET /v1/asr/status; voice model routes"},{"step":"2","action":"Run explicit managed setup for missing runtimes/weights and an exact accelerator when required."},{"step":"3","action":"Activate the selected engine/model and verify active status."},{"step":"4","action":"Transcribe or synthesize through the OpenAPI-documented route and validate the output artifact."}],"verification":[{"check":"Status reports the requested active engine/model/device and a small non-live test succeeds","expected":"No interpreter override or fallback to a different engine"}],"failure_modes":[{"symptom":"transcribe_cli is missing although a managed environment exists","likely_cause":"TRANSCRIBE_PYTHON points at an older Whisper environment","recovery":"Use the canonical managed transcribe runtime selection and re-check ASR status"}],"source_of_truth":["packages/execution/src/asr/registry.ts","packages/execution/src/transcribe-python-runtime.ts","packages/cli/src/api/voice-runtime.ts"]},
|
|
114
116
|
{"id":"workflow.daemon-tray-update","kind":"workflow","title":"Operate daemon, tray, and updates","summary":"Ensure one current daemon owns the service port, start the tray against it, install updates through the real global npm flow, stream progress, restart components, and verify the target runtime.","aliases":["update Omnius","indicator update"],"keywords":["npm global","restart","version"],"maturity":"stable","layer":"operations","audiences":["operator","coding-agent"],"workflow":[{"step":"1","action":"Read installed and running identities from /version; diagnose port ownership before restart."},{"step":"2","action":"Start/reclaim the daemon through its managed lifecycle and confirm health."},{"step":"3","action":"Start the indicator and require daemon-online state before enabling service actions."},{"step":"4","action":"Run the update service, stream its live progress, restart the daemon/indicator, and compare /version with the target."}],"verification":[{"check":"Installed package, daemon /version, and indicator version all equal the update target","expected":"Verified target runtime, not merely queued or process-started"}],"failure_modes":[{"symptom":"UI remains on updating/queued","likely_cause":"The update worker was never executed or progress was not connected","recovery":"Inspect update job status/log stream and fail explicitly if no worker owns it"},{"symptom":"Restart verification fails","likely_cause":"Old daemon retained port ownership or new runtime did not become ready","recovery":"Resolve exact port PID, preserve unrelated processes, restart, then verify /health and /version"}],"source_of_truth":["packages/cli/src/update-service.ts","packages/cli/src/update-worker.ts","packages/cli/src/daemon.ts","packages/cli/src/tray.ts"]},
|
|
@@ -428,6 +428,50 @@
|
|
|
428
428
|
],
|
|
429
429
|
"related": ["api.tools", "tool.tool-search", "operation.version-compatibility"]
|
|
430
430
|
},
|
|
431
|
+
{
|
|
432
|
+
"id": "tool.adjudicate",
|
|
433
|
+
"kind": "tool",
|
|
434
|
+
"title": "Evidence-bound adjudication",
|
|
435
|
+
"summary": "Resolve one genuine decision impasse outside the accumulated parent narrative through a frozen evidence record, fresh scoped constituent review, host-validated citations and quorum, a final judge, and a durable verdict receipt.",
|
|
436
|
+
"aliases": ["adjudicate", "adjudication", "decision impasse", "impartial decision", "evidence-bound decision"],
|
|
437
|
+
"keywords": ["agent-bound", "impasse", "evidence", "constituents", "quorum", "judge", "verdict", "dissent"],
|
|
438
|
+
"maturity": "stable",
|
|
439
|
+
"layer": "orchestration",
|
|
440
|
+
"audiences": ["coding-agent", "maintainer", "interactive-user"],
|
|
441
|
+
"direct_callable": false,
|
|
442
|
+
"use_when": [
|
|
443
|
+
"A top-level full agent has one exact unresolved decision with at least two materially plausible outcomes",
|
|
444
|
+
"The admissible evidence supports conflicting conclusions or risk tradeoffs",
|
|
445
|
+
"The decision changes the next action and benefits from fresh evidence-scoped review that reduces parent-context anchoring",
|
|
446
|
+
"The caller can make record selection and framing explicit and auditable"
|
|
447
|
+
],
|
|
448
|
+
"avoid_when": [
|
|
449
|
+
"The question is an ordinary implementation choice, factual lookup, or substitute for gathering missing evidence",
|
|
450
|
+
"The caller is a child agent, daemon direct-tool client, bounded /v1/chat/completions loop, Telegram runner, or voice-call runner"
|
|
451
|
+
],
|
|
452
|
+
"interfaces": [
|
|
453
|
+
{"type": "tui-agent-tool", "target": "omnius", "description": "Top-level interactive agent with the specialized streamed adjudication block"},
|
|
454
|
+
{"type": "cli-agent-tool", "target": "omnius \"<task>\"", "description": "Top-level one-shot agent with ordinary tool events"},
|
|
455
|
+
{"type": "agent-run", "target": "POST /v1/run", "description": "Spawned top-level full agent; subject to the active tool profile"},
|
|
456
|
+
{"type": "agent-chat", "target": "POST /v1/chat", "description": "Default full-agent chat mode; subject to the active tool profile"}
|
|
457
|
+
],
|
|
458
|
+
"references": [
|
|
459
|
+
{"type": "guide", "target": "docs/ADJUDICATION.md", "relation": "canonical-guide"},
|
|
460
|
+
{"type": "source", "target": "packages/orchestrator/src/adjudication.ts", "relation": "implementation"},
|
|
461
|
+
{"type": "source", "target": "packages/cli/src/tui/interactive.ts", "relation": "top-level-registration"},
|
|
462
|
+
{"type": "source", "target": "packages/cli/src/tui/adjudication-live-block.ts", "relation": "live-projection"}
|
|
463
|
+
],
|
|
464
|
+
"related": ["workflow.evidence-bound-adjudication", "layer.orchestration", "layer.observability", "module.orchestrator", "guide.adjudication-uppercase"],
|
|
465
|
+
"verification": [
|
|
466
|
+
{"check": "Run pnpm harness:adjudication", "expected": "Parallel constituent streams, judge synthesis, and a durable receipt complete without loading a real model"},
|
|
467
|
+
{"check": "Inspect the parent-runner and child-agent tool registration tests", "expected": "Top-level full agents keep adjudicate inline and host scope enforcement excludes it from child runners"}
|
|
468
|
+
],
|
|
469
|
+
"failure_modes": [
|
|
470
|
+
{"symptom": "A caller attempts /v1/tools/adjudicate/call", "likely_cause": "Static tool discovery was mistaken for daemon direct-tool exposure", "recovery": "Use a top-level TUI, one-shot CLI, /v1/run, or default full-agent /v1/chat path"},
|
|
471
|
+
{"symptom": "The case returns held instead of a verdict", "likely_cause": "Admission, citation validation, quorum, or final verdict validation failed", "recovery": "Inspect the receipt and provide a corrected admissible record; do not infer a decision"}
|
|
472
|
+
],
|
|
473
|
+
"source_of_truth": ["docs/ADJUDICATION.md", "packages/orchestrator/src/adjudication.ts", "packages/cli/src/tui/interactive.ts"]
|
|
474
|
+
},
|
|
431
475
|
{
|
|
432
476
|
"id": "tool.tool-search",
|
|
433
477
|
"kind": "tool",
|
|
@@ -85,6 +85,41 @@ origin, network/off-device policy, and risk.
|
|
|
85
85
|
See [Tools, MCP, Hooks, Agents, And Code Graph](../rest/endpoints/tools.md) for
|
|
86
86
|
the complete REST contract.
|
|
87
87
|
|
|
88
|
+
## `adjudicate` Is A Top-Level Full-Agent Tool
|
|
89
|
+
|
|
90
|
+
`adjudicate` resolves a genuine decision impasse through an isolated,
|
|
91
|
+
evidence-scoped panel and final judge. It is agent-bound, but it is not a
|
|
92
|
+
daemon direct tool. The interactive TUI, one-shot CLI, `POST /v1/run`, and the
|
|
93
|
+
default full-agent `POST /v1/chat` path receive it. REST execution remains
|
|
94
|
+
subject to the active full-agent tool profile.
|
|
95
|
+
|
|
96
|
+
The parent freezes an admissible record before deliberation. Fresh constituent
|
|
97
|
+
contexts receive only assigned evidence and rules, and the judge receives the
|
|
98
|
+
record plus validated findings instead of the parent transcript. This reduces
|
|
99
|
+
anchoring from accumulated working context. It does not erase bias from record
|
|
100
|
+
selection or framing, which remain visible in the durable receipt.
|
|
101
|
+
|
|
102
|
+
The tool is intentionally excluded from sub-agents. This prevents nested
|
|
103
|
+
adjudication panels, recursive live blocks, and unbounded inference fan-out.
|
|
104
|
+
It is also absent from the daemon direct-tool registry, the bounded
|
|
105
|
+
`/v1/chat/completions` mini-loop, Telegram, and voice-call agents. Do not infer
|
|
106
|
+
`GET /v1/tools/adjudicate`, `POST /v1/tools/adjudicate/call`, or a Telegram
|
|
107
|
+
tool route from its catalog entry. Only the interactive TUI renders the
|
|
108
|
+
specialized streamed adjudication block. Headless and REST full-agent paths
|
|
109
|
+
use ordinary run/tool events and still persist the same receipt artifacts.
|
|
110
|
+
|
|
111
|
+
Use these offline discovery commands:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
omnius discover "evidence-bound decision impasse"
|
|
115
|
+
omnius show tool.adjudicate
|
|
116
|
+
omnius show workflow.evidence-bound-adjudication
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
See [Evidence-Bound Adjudication](../ADJUDICATION.md) for admission rules,
|
|
120
|
+
panel isolation, quorum, verdict validation, durable receipts, CLI
|
|
121
|
+
observability, and the deterministic harness.
|
|
122
|
+
|
|
88
123
|
## Failure Rules
|
|
89
124
|
|
|
90
125
|
- Unknown tool: refresh discovery/metadata; do not retry the same name.
|
package/docs/index.md
CHANGED
|
@@ -32,6 +32,7 @@ should additionally expand the owning layer and module.
|
|
|
32
32
|
- [Media Generation](./guides/media-generation.md)
|
|
33
33
|
- [System Tray Indicator](./guides/system-tray.md)
|
|
34
34
|
- [Tools And Web Search](./guides/tools-and-web-search.md)
|
|
35
|
+
- [Evidence-Bound Adjudication](./ADJUDICATION.md)
|
|
35
36
|
- [Categorized OSINT Research](./guides/osint-research.md)
|
|
36
37
|
|
|
37
38
|
## Reference
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.677",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.677",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|