omnius 1.0.159 → 1.0.160
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 +5 -0
- package/.aiwg/addons/omnius-docs/manifest.json +32 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-docs/SKILL.md +48 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-ops-docs/SKILL.md +32 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-realtime-docs/SKILL.md +30 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-sponsor-docs/SKILL.md +31 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-telegram-docs/SKILL.md +30 -0
- package/.aiwg/addons/omnius-rest-docs/README.md +7 -0
- package/.aiwg/addons/omnius-rest-docs/manifest.json +24 -0
- package/.aiwg/addons/omnius-rest-docs/skills/omnius-rest-docs/SKILL.md +72 -0
- package/README.md +115 -5011
- package/dist/index.js +561 -74
- package/docs/.vitepress/config.mts +108 -0
- package/docs/agent-memory/INDEX.md +38 -0
- package/docs/agent-memory/index.md +14 -0
- package/docs/architecture/overview.md +30 -0
- package/docs/getting-started/first-run.md +38 -0
- package/docs/getting-started/install.md +58 -0
- package/docs/getting-started/model-providers.md +48 -0
- package/docs/guides/media-generation.md +88 -0
- package/docs/guides/realtime.md +138 -0
- package/docs/guides/sponsor-and-cohere.md +123 -0
- package/docs/guides/telegram.md +95 -0
- package/docs/guides/tui-workflows.md +48 -0
- package/docs/index.md +30 -0
- package/docs/operations/runtime-hygiene.md +75 -0
- package/docs/operations/security-and-remote-access.md +70 -0
- package/docs/reference/configuration.md +45 -0
- package/docs/reference/rest-api.md +225 -0
- package/docs/reference/slash-commands.md +2095 -0
- package/docs/rest/INDEX.md +129 -0
- package/docs/rest/QUICKREF.md +125 -0
- package/docs/rest/REST-DOCS-MANIFEST.json +27 -0
- package/docs/rest/auth-and-scopes.md +101 -0
- package/docs/rest/endpoints/aims.md +26 -0
- package/docs/rest/endpoints/aiwg.md +44 -0
- package/docs/rest/endpoints/chat.md +101 -0
- package/docs/rest/endpoints/config.md +53 -0
- package/docs/rest/endpoints/events.md +63 -0
- package/docs/rest/endpoints/files.md +18 -0
- package/docs/rest/endpoints/memory.md +42 -0
- package/docs/rest/endpoints/run.md +52 -0
- package/docs/rest/endpoints/skills.md +41 -0
- package/docs/rest/endpoints/tools.md +62 -0
- package/docs/rest/endpoints/voice-vision.md +80 -0
- package/docs/rest/errors-pagination-etags.md +84 -0
- package/docs/rest/examples/curl.md +84 -0
- package/docs/rest/examples/openai-sdk.md +59 -0
- package/docs/rest/openapi-source.md +36 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +5 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Files
|
|
2
|
+
|
|
3
|
+
## Endpoint Summary
|
|
4
|
+
|
|
5
|
+
| Method | Path | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| `GET` | `/v1/files` | List a workspace directory |
|
|
8
|
+
| `GET` | `/v1/files/read` | Read a workspace file |
|
|
9
|
+
|
|
10
|
+
## Directory Listing
|
|
11
|
+
|
|
12
|
+
`GET /v1/files?path=<relative-or-absolute>` returns directory entries for the active or requested workspace.
|
|
13
|
+
|
|
14
|
+
## File Read
|
|
15
|
+
|
|
16
|
+
`GET /v1/files/read?path=<path>` reads file content where policy permits.
|
|
17
|
+
|
|
18
|
+
File operations are subject to workspace, auth, and profile restrictions. Remote clients should not assume arbitrary filesystem access.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Memory, Sessions, And Context
|
|
2
|
+
|
|
3
|
+
## Endpoint Summary
|
|
4
|
+
|
|
5
|
+
| Method | Path | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| `GET` | `/v1/memory` | Memory backend summary |
|
|
8
|
+
| `POST` | `/v1/memory/search` | Search memory |
|
|
9
|
+
| `POST` | `/v1/memory/write` | Write memory |
|
|
10
|
+
| `GET` | `/v1/memory/episodes` | List episodes |
|
|
11
|
+
| `GET` | `/v1/memory/failures` | List captured failures |
|
|
12
|
+
| `GET` | `/v1/sessions` | List Omnius task sessions |
|
|
13
|
+
| `GET` | `/v1/sessions/{id}` | Get session history |
|
|
14
|
+
| `GET` | `/v1/context` | Show current session context |
|
|
15
|
+
| `POST` | `/v1/context/save` | Save a context entry |
|
|
16
|
+
| `GET` | `/v1/context/restore` | Build a restore prompt |
|
|
17
|
+
| `POST` | `/v1/context/compact` | Request context compaction |
|
|
18
|
+
|
|
19
|
+
## Memory Search
|
|
20
|
+
|
|
21
|
+
Use memory search for persistent knowledge, failures, prior decisions, and scoped context. Public connector surfaces such as Telegram should keep scope explicit so one chat does not pollute another.
|
|
22
|
+
|
|
23
|
+
## Memory Write
|
|
24
|
+
|
|
25
|
+
Memory writes require run or admin scope where enforced. Prefer structured, scoped writes over dumping entire transcripts.
|
|
26
|
+
|
|
27
|
+
## Failures
|
|
28
|
+
|
|
29
|
+
Failure records let the agent learn from raw observed outputs. The design goal is to pass failure output through as evidence, not convert platform-specific strings into hardcoded policy shortcuts.
|
|
30
|
+
|
|
31
|
+
## Context
|
|
32
|
+
|
|
33
|
+
Context endpoints expose the TUI context stack:
|
|
34
|
+
|
|
35
|
+
- `GET /v1/context`: current context snapshot.
|
|
36
|
+
- `POST /v1/context/save`: persist a context entry.
|
|
37
|
+
- `GET /v1/context/restore`: build a restore prompt.
|
|
38
|
+
- `POST /v1/context/compact`: request compaction.
|
|
39
|
+
|
|
40
|
+
## Sessions
|
|
41
|
+
|
|
42
|
+
Session endpoints expose archived task turns, which can be used by dashboards, replay tooling, or state restoration.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Runs, Jobs, Todos, And Scheduled Work
|
|
2
|
+
|
|
3
|
+
## Endpoint Summary
|
|
4
|
+
|
|
5
|
+
| Method | Path | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| `POST` | `/v1/run` | Submit an agentic task |
|
|
8
|
+
| `GET` | `/v1/runs` | List runs |
|
|
9
|
+
| `GET` | `/v1/runs/{id}` | Get run details |
|
|
10
|
+
| `DELETE` | `/v1/runs/{id}` | Abort a run |
|
|
11
|
+
| `GET` | `/v1/todos` | List sessions with todo lists |
|
|
12
|
+
| `GET` | `/v1/todos/{session_id}` | Get todos for a session |
|
|
13
|
+
| `POST` | `/v1/todos/{session_id}` | Replace or update todos for a session |
|
|
14
|
+
| `POST` | `/v1/evaluate` | Evaluate a run by ID |
|
|
15
|
+
| `POST` | `/v1/index` | Trigger repository indexing |
|
|
16
|
+
| `GET` | `/v1/scheduled` | List scheduled jobs |
|
|
17
|
+
| `GET` | `/v1/scheduled/all` | List all scheduled jobs |
|
|
18
|
+
| `GET` | `/v1/scheduled/status` | Scheduled runner status |
|
|
19
|
+
| `POST` | `/v1/scheduled/kill` | Kill a scheduled job |
|
|
20
|
+
| `POST` | `/v1/scheduled/fixup` | Reconcile scheduled job state |
|
|
21
|
+
| `POST` | `/v1/scheduled/reconcile` | Force reconciliation |
|
|
22
|
+
|
|
23
|
+
## `/v1/run`
|
|
24
|
+
|
|
25
|
+
Submits a long-running task to the daemon and returns an accepted job record. Runs are tracked under `.omnius/jobs/`.
|
|
26
|
+
|
|
27
|
+
Common body fields:
|
|
28
|
+
|
|
29
|
+
| Field | Purpose |
|
|
30
|
+
| --- | --- |
|
|
31
|
+
| `task` | Natural language task |
|
|
32
|
+
| `repo` or `working_dir` | Workspace root |
|
|
33
|
+
| `model` | Optional model override |
|
|
34
|
+
| `sandbox` | Execution sandbox mode |
|
|
35
|
+
| `profile` | Tool profile |
|
|
36
|
+
| `timeout_s` | Wall-clock timeout |
|
|
37
|
+
|
|
38
|
+
## Abort
|
|
39
|
+
|
|
40
|
+
`DELETE /v1/runs/{id}` aborts the job. The daemon signals the process group, escalates if needed, updates the job record, and decrements per-key active job counters.
|
|
41
|
+
|
|
42
|
+
## Handoff And Adoption
|
|
43
|
+
|
|
44
|
+
When a daemon restarts gracefully, live child runs can be adopted from the handoff file. The daemon polls foreign PIDs, re-arms timeouts, and finalizes job records when those processes exit.
|
|
45
|
+
|
|
46
|
+
## Todos
|
|
47
|
+
|
|
48
|
+
Todo endpoints expose the same checklist state the TUI and agent loop use. They are useful for dashboards and run supervision.
|
|
49
|
+
|
|
50
|
+
## Scheduled Jobs
|
|
51
|
+
|
|
52
|
+
Scheduled endpoints report and repair the long-running scheduler state. Use admin-scoped controls for kill or reconciliation operations.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Skills And Commands
|
|
2
|
+
|
|
3
|
+
## Endpoint Summary
|
|
4
|
+
|
|
5
|
+
| Method | Path | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| `GET` | `/v1/skills` | List skills |
|
|
8
|
+
| `GET` | `/v1/skills/{name}` | Load skill content |
|
|
9
|
+
| `GET` | `/v1/commands` | List slash commands |
|
|
10
|
+
| `POST` | `/v1/commands/{cmd}` | Execute a slash command in an isolated subprocess |
|
|
11
|
+
|
|
12
|
+
## Skills
|
|
13
|
+
|
|
14
|
+
Omnius discovers skills from:
|
|
15
|
+
|
|
16
|
+
- AIWG package frameworks, addons, and plugins.
|
|
17
|
+
- AIWG user data frameworks, addons, and plugins.
|
|
18
|
+
- Project `.aiwg/skills`.
|
|
19
|
+
- Project `.aiwg/commands`.
|
|
20
|
+
- Project-local AIWG bundles: `.aiwg/addons/*/skills`, `.aiwg/extensions/*/skills`, `.aiwg/frameworks/*/skills`, `.aiwg/plugins/*/skills`.
|
|
21
|
+
- Project `.omnius/skills`.
|
|
22
|
+
|
|
23
|
+
The REST docs bundle is available as:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
omnius-rest-docs
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Use `/v1/skills/omnius-rest-docs` or the agent tool `skill_execute`.
|
|
30
|
+
|
|
31
|
+
## Commands
|
|
32
|
+
|
|
33
|
+
Command execution is isolated in a subprocess and subject to command policy. Dangerous or denied commands require admin controls and may be blocked by profile policy.
|
|
34
|
+
|
|
35
|
+
## Small-Context Pattern
|
|
36
|
+
|
|
37
|
+
For agents:
|
|
38
|
+
|
|
39
|
+
1. Use `skill_list` or `/v1/skills` to find the skill.
|
|
40
|
+
2. Load only the specific skill that matches the current task.
|
|
41
|
+
3. Use `skill_extract` where available to pull targeted sections instead of full documents.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Tools, MCP, Hooks, Agents, And Code Graph
|
|
2
|
+
|
|
3
|
+
## Endpoint Summary
|
|
4
|
+
|
|
5
|
+
| Method | Path | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| `GET` | `/v1/tools` | List tool registry with security metadata |
|
|
8
|
+
| `GET` | `/v1/tools/{name}` | Get one tool definition |
|
|
9
|
+
| `POST` | `/v1/tools/{name}/call` | Invoke a tool |
|
|
10
|
+
| `GET` | `/v1/mcps` | List MCP servers |
|
|
11
|
+
| `GET` | `/v1/mcps/{name}` | Get MCP server details |
|
|
12
|
+
| `POST` | `/v1/mcps/{name}/call` | Invoke an MCP tool |
|
|
13
|
+
| `GET` | `/v1/hooks` | List hook types and counts |
|
|
14
|
+
| `GET` | `/v1/agents` | List agent types |
|
|
15
|
+
| `GET` | `/v1/codegraph/snapshot` | Code graph stats and recent events |
|
|
16
|
+
| `GET` | `/v1/codegraph/events` | Code graph live event stream |
|
|
17
|
+
|
|
18
|
+
## Tool Metadata
|
|
19
|
+
|
|
20
|
+
`GET /v1/tools` returns each tool's:
|
|
21
|
+
|
|
22
|
+
- name
|
|
23
|
+
- class
|
|
24
|
+
- description
|
|
25
|
+
- JSON-schema parameters
|
|
26
|
+
- security categories
|
|
27
|
+
- risk
|
|
28
|
+
- required scope
|
|
29
|
+
- off-device allowance
|
|
30
|
+
- rationale
|
|
31
|
+
|
|
32
|
+
Filters include:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
?category=read|write|exec|network|hardware|agent|sensitive
|
|
36
|
+
?scope=read|run|admin
|
|
37
|
+
?risk=low|medium|high|critical
|
|
38
|
+
?limit=200&offset=0
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Tool Calls
|
|
42
|
+
|
|
43
|
+
`POST /v1/tools/{name}/call` body:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"args": {},
|
|
48
|
+
"working_dir": "/path/to/repo"
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`args` is the canonical wrapper. The schema from `/v1/tools/{name}` describes the fields inside `args`.
|
|
53
|
+
|
|
54
|
+
Tool calls are gated by auth scope, tool policy, off-device policy, and profile restrictions.
|
|
55
|
+
|
|
56
|
+
## MCP
|
|
57
|
+
|
|
58
|
+
MCP endpoints list connected Model Context Protocol servers and invoke tools through the daemon with the same auth and audit envelope.
|
|
59
|
+
|
|
60
|
+
## Code Graph
|
|
61
|
+
|
|
62
|
+
Code graph endpoints expose repository indexing state and live graph events for GUI or dashboard clients.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Voice, Audio, Vision, And Voicechat
|
|
2
|
+
|
|
3
|
+
## Endpoint Summary
|
|
4
|
+
|
|
5
|
+
| Method | Path | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| `GET` | `/v1/voice/state` | Voice runtime status |
|
|
8
|
+
| `GET` | `/v1/voice/models` | List TTS voice models |
|
|
9
|
+
| `POST` | `/v1/voice/models/switch` | Switch active TTS model |
|
|
10
|
+
| `GET`/`PUT` | `/v1/voice/supertonic-settings` | Voice tuning settings |
|
|
11
|
+
| `GET` | `/v1/voice/asr-models` | List Whisper ASR models |
|
|
12
|
+
| `POST` | `/v1/voice/asr-models/switch` | Switch active ASR model |
|
|
13
|
+
| `POST` | `/v1/voice/tts` | Synthesize text |
|
|
14
|
+
| `POST` | `/v1/audio/speech` | OpenAI-compatible TTS alias |
|
|
15
|
+
| `POST` | `/v1/voice/transcribe` | Transcribe audio |
|
|
16
|
+
| `POST` | `/v1/audio/transcriptions` | OpenAI-compatible transcription alias |
|
|
17
|
+
| `POST` | `/v1/voice/transcribe/stream` | Streaming transcription |
|
|
18
|
+
| `GET` | `/v1/voice/clone-refs` | List clone references |
|
|
19
|
+
| `POST` | `/v1/voice/clone-refs/upload` | Upload clone reference |
|
|
20
|
+
| `POST` | `/v1/voice/clone-refs/from-url` | Fetch clone reference server-side |
|
|
21
|
+
| `POST` | `/v1/voice/clone-refs/{filename}/activate` | Activate clone reference |
|
|
22
|
+
| `POST` | `/v1/voice/clone-refs/{filename}/rename` | Rename clone reference |
|
|
23
|
+
| `DELETE` | `/v1/voice/clone-refs/{filename}` | Delete clone reference |
|
|
24
|
+
| `POST` | `/v1/voice/speak` | Synthesize and broadcast to voicechat clients |
|
|
25
|
+
| `WS` | `/v1/voicechat/ws` | Full-duplex voicechat WebSocket |
|
|
26
|
+
| `POST` | `/v1/vision/describe` | Vision describe placeholder/deferred endpoint |
|
|
27
|
+
|
|
28
|
+
## TTS
|
|
29
|
+
|
|
30
|
+
`POST /v1/voice/tts` returns audio bytes. `format` can be `wav` or `pcm`. `X-Sample-Rate` reports the sample rate.
|
|
31
|
+
|
|
32
|
+
OpenAI-compatible alias:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
POST /v1/audio/speech
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## ASR
|
|
39
|
+
|
|
40
|
+
`POST /v1/voice/transcribe` transcribes uploaded audio. The OpenAI-compatible alias is:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
POST /v1/audio/transcriptions
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Voicechat WebSocket
|
|
47
|
+
|
|
48
|
+
`/v1/voicechat/ws` supports full-duplex realtime voice.
|
|
49
|
+
|
|
50
|
+
Client to server:
|
|
51
|
+
|
|
52
|
+
- Binary PCM Int16 mono 16 kHz mic audio.
|
|
53
|
+
- JSON text frame `{ "type": "start" }`.
|
|
54
|
+
- JSON text frame `{ "type": "stop" }`.
|
|
55
|
+
- JSON text frame `{ "type": "speak", "text": "..." }`.
|
|
56
|
+
- JSON text frame `{ "type": "ping" }`.
|
|
57
|
+
|
|
58
|
+
Server to client:
|
|
59
|
+
|
|
60
|
+
- `hello`
|
|
61
|
+
- `loaded`
|
|
62
|
+
- `transcript`
|
|
63
|
+
- `agent_text`
|
|
64
|
+
- `tts_header`
|
|
65
|
+
- binary TTS PCM
|
|
66
|
+
- `tts_start`
|
|
67
|
+
- `tts_end`
|
|
68
|
+
- `state`
|
|
69
|
+
- `session_state`
|
|
70
|
+
- `error`
|
|
71
|
+
- `keepalive`
|
|
72
|
+
- `pong`
|
|
73
|
+
- `session_started`
|
|
74
|
+
- `session_stopped`
|
|
75
|
+
|
|
76
|
+
Each binary TTS batch is preceded by a `tts_header` frame that announces the sample rate.
|
|
77
|
+
|
|
78
|
+
## Realtime REST Plus Voice
|
|
79
|
+
|
|
80
|
+
For ASR/TTS clients that do not use `/v1/voicechat/ws`, call `/v1/chat` with `realtime: true` and send the text transcript as `message`.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Errors, Pagination, ETags, And Request IDs
|
|
2
|
+
|
|
3
|
+
## Error Shape
|
|
4
|
+
|
|
5
|
+
The OpenAPI contract documents RFC 7807 Problem Details for common errors:
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"type": "https://omnius.nexus/problems/not-found",
|
|
10
|
+
"title": "Resource not found",
|
|
11
|
+
"status": 404,
|
|
12
|
+
"detail": "Optional detail",
|
|
13
|
+
"instance": "request-id",
|
|
14
|
+
"aims:control": "Optional ISO/IEC 42001 control reference"
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Some legacy endpoints may still return simpler `{ "error": "..." }` shapes. Prefer the live `/openapi.json` and endpoint behavior when writing strict clients.
|
|
19
|
+
|
|
20
|
+
## Common Status Codes
|
|
21
|
+
|
|
22
|
+
| Code | Meaning |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `400` | Invalid request body or query |
|
|
25
|
+
| `401` | Missing or invalid bearer token |
|
|
26
|
+
| `403` | Authenticated but scope or tool policy is insufficient |
|
|
27
|
+
| `404` | Resource not found |
|
|
28
|
+
| `429` | Rate limit exceeded |
|
|
29
|
+
| `500` | Internal daemon error |
|
|
30
|
+
| `501` | Endpoint intentionally not implemented yet |
|
|
31
|
+
|
|
32
|
+
## Pagination
|
|
33
|
+
|
|
34
|
+
List endpoints generally use:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"data": [],
|
|
39
|
+
"pagination": {
|
|
40
|
+
"limit": 50,
|
|
41
|
+
"offset": 0,
|
|
42
|
+
"total": 0,
|
|
43
|
+
"has_more": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Use:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
?limit=50&offset=0
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Some list endpoints support family-specific filters such as `status`, `category`, `scope`, `risk`, or `type`.
|
|
55
|
+
|
|
56
|
+
## ETags
|
|
57
|
+
|
|
58
|
+
Cacheable GET endpoints may return an `ETag` header. Send it back with:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
If-None-Match: "<etag>"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
When unchanged, the daemon can return `304 Not Modified`.
|
|
65
|
+
|
|
66
|
+
## Request Correlation
|
|
67
|
+
|
|
68
|
+
Clients can send:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
X-Request-ID: client-generated-id
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The daemon echoes the request ID where middleware applies and writes it into audit/event surfaces where available.
|
|
75
|
+
|
|
76
|
+
## API Version Header
|
|
77
|
+
|
|
78
|
+
Responses carry:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
X-API-Version: <semver>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Use this for compatibility checks in dashboards and remote clients.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Curl Examples
|
|
2
|
+
|
|
3
|
+
Set base:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
BASE=http://127.0.0.1:11435
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Health
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
curl -s "$BASE/health"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## OpenAPI
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
curl -s "$BASE/openapi.json" | jq '.info.title, .info.version'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Chat
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
curl -s "$BASE/v1/chat" \
|
|
25
|
+
-H 'content-type: application/json' \
|
|
26
|
+
-d '{"message":"What files define the REST API?","tools":true}'
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Realtime
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
curl -s "$BASE/v1/chat" \
|
|
33
|
+
-H 'content-type: application/json' \
|
|
34
|
+
-d '{
|
|
35
|
+
"message": "Answer like this is a live voice call.",
|
|
36
|
+
"realtime": true,
|
|
37
|
+
"realtime_options": {
|
|
38
|
+
"max_history_messages": 8,
|
|
39
|
+
"max_tokens": 120
|
|
40
|
+
}
|
|
41
|
+
}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## OpenAI-Compatible Chat
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
curl -s "$BASE/v1/chat/completions" \
|
|
48
|
+
-H 'content-type: application/json' \
|
|
49
|
+
-d '{
|
|
50
|
+
"model": "qwen3:4b",
|
|
51
|
+
"messages": [
|
|
52
|
+
{"role": "user", "content": "Return one sentence."}
|
|
53
|
+
]
|
|
54
|
+
}'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Agentic Run
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
curl -s -X POST "$BASE/v1/run" \
|
|
61
|
+
-H 'content-type: application/json' \
|
|
62
|
+
-d '{"task":"List the test files related to skill discovery."}'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Events
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
curl -N "$BASE/v1/events?type=run.*"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Skill Docs
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
curl -s "$BASE/v1/skills/omnius-rest-docs"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Runtime Key
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
curl -s -X POST "$BASE/v1/keys" \
|
|
81
|
+
-H 'authorization: Bearer admin-secret' \
|
|
82
|
+
-H 'content-type: application/json' \
|
|
83
|
+
-d '{"scope":"run","owner":"ci","rpm":60,"tpd":100000,"max_jobs":3}'
|
|
84
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# OpenAI SDK Examples
|
|
2
|
+
|
|
3
|
+
Omnius exposes an OpenAI-compatible chat-completions endpoint at `/v1/chat/completions`.
|
|
4
|
+
|
|
5
|
+
## JavaScript
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import OpenAI from "openai";
|
|
9
|
+
|
|
10
|
+
const client = new OpenAI({
|
|
11
|
+
baseURL: "http://127.0.0.1:11435/v1",
|
|
12
|
+
apiKey: process.env.OMNIUS_API_KEY ?? "local-dev",
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const response = await client.chat.completions.create({
|
|
16
|
+
model: "qwen3:4b",
|
|
17
|
+
messages: [
|
|
18
|
+
{ role: "user", content: "Summarize the current project." },
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
console.log(response.choices[0]?.message?.content);
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## JavaScript Realtime Flag
|
|
26
|
+
|
|
27
|
+
The SDK may not know Omnius-specific fields. Pass them through with a typed escape hatch if needed:
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
const response = await client.chat.completions.create({
|
|
31
|
+
model: "qwen3:4b",
|
|
32
|
+
messages: [
|
|
33
|
+
{ role: "user", content: "Keep it short enough for TTS." },
|
|
34
|
+
],
|
|
35
|
+
realtime: true,
|
|
36
|
+
realtime_options: {
|
|
37
|
+
max_history_messages: 8,
|
|
38
|
+
max_tokens: 120,
|
|
39
|
+
},
|
|
40
|
+
} as any);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Python
|
|
44
|
+
|
|
45
|
+
```py
|
|
46
|
+
from openai import OpenAI
|
|
47
|
+
|
|
48
|
+
client = OpenAI(
|
|
49
|
+
base_url="http://127.0.0.1:11435/v1",
|
|
50
|
+
api_key="local-dev",
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
response = client.chat.completions.create(
|
|
54
|
+
model="qwen3:4b",
|
|
55
|
+
messages=[{"role": "user", "content": "Return one sentence."}],
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
print(response.choices[0].message.content)
|
|
59
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# OpenAPI Source And Renderers
|
|
2
|
+
|
|
3
|
+
The canonical REST contract is generated by:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
packages/cli/src/api/openapi.ts
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Runtime docs:
|
|
10
|
+
|
|
11
|
+
| Path | Purpose |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `/openapi.json` | Canonical OpenAPI 3.0 JSON |
|
|
14
|
+
| `/openapi.yaml` | YAML form of the same spec |
|
|
15
|
+
| `/v3/api-docs` | OpenAPI alias |
|
|
16
|
+
| `/swagger.json` | Swagger-era alias |
|
|
17
|
+
| `/api-docs` | OpenAPI alias |
|
|
18
|
+
| `/docs` | Swagger UI |
|
|
19
|
+
| `/api/docs` | Swagger UI alias |
|
|
20
|
+
| `/swagger-ui` | Swagger UI alias |
|
|
21
|
+
| `/redoc` | ReDoc renderer |
|
|
22
|
+
|
|
23
|
+
Swagger UI attempts local assets first and can fall back to a CDN if available. Offline clients should prefer `/openapi.json`.
|
|
24
|
+
|
|
25
|
+
## Contract Rule
|
|
26
|
+
|
|
27
|
+
When docs and behavior differ:
|
|
28
|
+
|
|
29
|
+
1. Check the live daemon `/openapi.json`.
|
|
30
|
+
2. Check `packages/cli/src/api/openapi.ts`.
|
|
31
|
+
3. Check route implementation in `packages/cli/src/api/serve.ts` and `packages/cli/src/api/routes-v1.ts`.
|
|
32
|
+
4. Patch this docs directory after the behavior is confirmed.
|
|
33
|
+
|
|
34
|
+
## AsyncAPI
|
|
35
|
+
|
|
36
|
+
The voicechat WebSocket has an AsyncAPI description generated from the same schema definitions. See `docs/rest/endpoints/voice-vision.md`.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.160",
|
|
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.160",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|