omnius 1.0.621 → 1.0.623
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/dist/index.js +42576 -42455
- package/dist/update-worker.js +29 -19
- package/docs/DISCOVERY.json +504 -2
- package/docs/DISCOVERY.md +5 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/update-worker.js
CHANGED
|
@@ -293776,9 +293776,9 @@ async function managedDaemonServiceOwnsPort(port, dependencies = {
|
|
|
293776
293776
|
function systemdQuote(value) {
|
|
293777
293777
|
return /[\s"\\]/.test(value) ? `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"` : value;
|
|
293778
293778
|
}
|
|
293779
|
-
async function repairManagedDaemonUnit(port) {
|
|
293779
|
+
async function repairManagedDaemonUnit(port, preferredEntrypoint) {
|
|
293780
293780
|
if (process.platform !== "linux") return false;
|
|
293781
|
-
const command = await resolveDaemonCommand(process.execPath);
|
|
293781
|
+
const command = await resolveDaemonCommand(process.execPath, preferredEntrypoint);
|
|
293782
293782
|
if (!command) return false;
|
|
293783
293783
|
try {
|
|
293784
293784
|
const configHome = process.env["XDG_CONFIG_HOME"] || join14(homedir14(), ".config");
|
|
@@ -293990,7 +293990,7 @@ async function reclaimOwnedDaemonListener(port = getDaemonPort(), dependencies =
|
|
|
293990
293990
|
}
|
|
293991
293991
|
return { ok: true, action: "cleared", port, clearedPids, blockedPids: [] };
|
|
293992
293992
|
}
|
|
293993
|
-
async function restartDaemon(port, expectedVersion) {
|
|
293993
|
+
async function restartDaemon(port, expectedVersion, preferredEntrypoint) {
|
|
293994
293994
|
const p = port ?? getDaemonPort();
|
|
293995
293995
|
const managed = await managedDaemonServiceMatchesPort(p);
|
|
293996
293996
|
if (managed) {
|
|
@@ -293999,12 +293999,14 @@ async function restartDaemon(port, expectedVersion) {
|
|
|
293999
293999
|
if (!reclaimed.ok) return false;
|
|
294000
294000
|
await reclaimStaleDaemonEndpointClaim(p);
|
|
294001
294001
|
}
|
|
294002
|
+
await runUserSystemctl(["reset-failed", "omnius-daemon.service"]);
|
|
294002
294003
|
const restarted = await runUserSystemctl(["restart", "omnius-daemon.service"]);
|
|
294003
294004
|
if (restarted.ok && (await waitForDaemonReady(p, expectedVersion)).ok) return true;
|
|
294004
|
-
const repaired = await repairManagedDaemonUnit(p);
|
|
294005
|
+
const repaired = await repairManagedDaemonUnit(p, preferredEntrypoint);
|
|
294005
294006
|
if (repaired) {
|
|
294006
294007
|
await runUserSystemctl(["stop", "omnius-daemon.service"]);
|
|
294007
294008
|
await waitForDaemonStopped(p);
|
|
294009
|
+
await runUserSystemctl(["reset-failed", "omnius-daemon.service"]);
|
|
294008
294010
|
const started = await runUserSystemctl(["start", "omnius-daemon.service"]);
|
|
294009
294011
|
if (started.ok && (await waitForDaemonReady(p, expectedVersion)).ok) return true;
|
|
294010
294012
|
}
|
|
@@ -294019,7 +294021,7 @@ async function restartDaemon(port, expectedVersion) {
|
|
|
294019
294021
|
if (!reclaimed.ok) return false;
|
|
294020
294022
|
}
|
|
294021
294023
|
if (!await reclaimStaleDaemonEndpointClaim(p)) return false;
|
|
294022
|
-
const pid = await startDaemon(p);
|
|
294024
|
+
const pid = await startDaemon(p, preferredEntrypoint);
|
|
294023
294025
|
if (!pid) return false;
|
|
294024
294026
|
return (await waitForDaemonReady(p, expectedVersion)).ok;
|
|
294025
294027
|
}
|
|
@@ -294039,8 +294041,9 @@ function commandForEntrypoint(path, nodeExe) {
|
|
|
294039
294041
|
}
|
|
294040
294042
|
return { command: path, args };
|
|
294041
294043
|
}
|
|
294042
|
-
async function resolveDaemonCommand(nodeExe) {
|
|
294044
|
+
async function resolveDaemonCommand(nodeExe, preferredEntrypoint) {
|
|
294043
294045
|
const candidates = [];
|
|
294046
|
+
if (preferredEntrypoint) candidates.push(preferredEntrypoint);
|
|
294044
294047
|
const thisDir = dirname8(fileURLToPath2(import.meta.url));
|
|
294045
294048
|
candidates.push(join14(thisDir, "index.js"));
|
|
294046
294049
|
if (process.argv[1]) candidates.push(process.argv[1]);
|
|
@@ -294063,13 +294066,13 @@ async function resolveDaemonCommand(nodeExe) {
|
|
|
294063
294066
|
}
|
|
294064
294067
|
return null;
|
|
294065
294068
|
}
|
|
294066
|
-
async function startDaemon(port = getDaemonPort()) {
|
|
294069
|
+
async function startDaemon(port = getDaemonPort(), preferredEntrypoint) {
|
|
294067
294070
|
mkdirSync3(OMNIUS_DIR, { recursive: true });
|
|
294068
294071
|
const daemonPort = port;
|
|
294069
294072
|
const endpointClaim = claimDaemonEndpoint(daemonPort);
|
|
294070
294073
|
if (!endpointClaim) return null;
|
|
294071
294074
|
const nodeExe = process.execPath;
|
|
294072
|
-
const daemonCommand = await resolveDaemonCommand(nodeExe);
|
|
294075
|
+
const daemonCommand = await resolveDaemonCommand(nodeExe, preferredEntrypoint);
|
|
294073
294076
|
if (!daemonCommand) {
|
|
294074
294077
|
releaseDaemonEndpointClaim(endpointClaim);
|
|
294075
294078
|
return null;
|
|
@@ -294496,24 +294499,31 @@ async function runVerifiedUpdateTransaction(initial, dependencies, paths = resol
|
|
|
294496
294499
|
executable_version: evidence.executableVersion
|
|
294497
294500
|
}, paths);
|
|
294498
294501
|
state = transition(state, { phase: "daemon_restarting" }, paths);
|
|
294499
|
-
|
|
294500
|
-
|
|
294501
|
-
|
|
294502
|
-
);
|
|
294502
|
+
let daemon = null;
|
|
294503
|
+
let restartAcknowledged = false;
|
|
294504
|
+
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
294505
|
+
restartAcknowledged = await dependencies.restartDaemon(target, evidence.executablePath) || restartAcknowledged;
|
|
294506
|
+
daemon = await dependencies.observeDaemon();
|
|
294507
|
+
if (daemon?.bootVersion === target && daemon.bootPackageHash === evidence.packageHash) {
|
|
294508
|
+
break;
|
|
294509
|
+
}
|
|
294510
|
+
if (attempt < 3) await new Promise((resolve12) => setTimeout(resolve12, 1e3));
|
|
294503
294511
|
}
|
|
294504
|
-
daemonQuiesced = false;
|
|
294505
|
-
const daemon = await dependencies.observeDaemon();
|
|
294506
294512
|
if (!daemon || daemon.bootVersion !== target) {
|
|
294507
|
-
|
|
294513
|
+
const observed = daemon?.bootVersion ?? "unreachable";
|
|
294514
|
+
throw new Error(
|
|
294515
|
+
restartAcknowledged ? `Daemon verification failed after 3 recovery attempts: expected ${target}, observed ${observed}` : `The daemon at ${state.daemon_endpoint ?? "the configured endpoint"} could not be restarted from the verified Omnius v${target} executable after 3 attempts`
|
|
294516
|
+
);
|
|
294508
294517
|
}
|
|
294509
294518
|
if (!daemon.bootPackageHash) {
|
|
294510
|
-
throw new Error("Daemon package verification failed: the restarted runtime did not report a boot package hash");
|
|
294519
|
+
throw new Error("Daemon package verification failed after 3 recovery attempts: the restarted runtime did not report a boot package hash");
|
|
294511
294520
|
}
|
|
294512
294521
|
if (daemon.bootPackageHash !== evidence.packageHash) {
|
|
294513
294522
|
throw new Error(
|
|
294514
|
-
`Daemon package verification failed: boot hash ${daemon.bootPackageHash} does not match installed hash ${evidence.packageHash}`
|
|
294523
|
+
`Daemon package verification failed after 3 recovery attempts: boot hash ${daemon.bootPackageHash} does not match installed hash ${evidence.packageHash}`
|
|
294515
294524
|
);
|
|
294516
294525
|
}
|
|
294526
|
+
daemonQuiesced = false;
|
|
294517
294527
|
state = transition(state, {
|
|
294518
294528
|
phase: "runtime_verified",
|
|
294519
294529
|
daemon_version: daemon.bootVersion,
|
|
@@ -294865,8 +294875,8 @@ async function main() {
|
|
|
294865
294875
|
state,
|
|
294866
294876
|
{
|
|
294867
294877
|
quiesceDaemon: () => quiesceDaemonForUpdate(port),
|
|
294868
|
-
restartDaemon: (expected) => restartDaemon(port, expected),
|
|
294869
|
-
recoverDaemon: () => restartDaemon(port),
|
|
294878
|
+
restartDaemon: (expected, executable) => restartDaemon(port, expected, executable),
|
|
294879
|
+
recoverDaemon: () => restartDaemon(port, target),
|
|
294870
294880
|
observeDaemon: async () => {
|
|
294871
294881
|
const identity = await getDaemonReportedIdentity(port);
|
|
294872
294882
|
return identity ? { bootVersion: identity.bootVersion, bootPackageHash: identity.bootPackageHash } : null;
|
package/docs/DISCOVERY.json
CHANGED
|
@@ -12380,6 +12380,162 @@
|
|
|
12380
12380
|
"packages/cli/src/api/openapi.ts"
|
|
12381
12381
|
]
|
|
12382
12382
|
},
|
|
12383
|
+
{
|
|
12384
|
+
"id": "api.v1-services",
|
|
12385
|
+
"kind": "api",
|
|
12386
|
+
"title": "/v1/services",
|
|
12387
|
+
"summary": "List all active daemon-owned REST services and their routes",
|
|
12388
|
+
"aliases": [
|
|
12389
|
+
"/v1/services"
|
|
12390
|
+
],
|
|
12391
|
+
"keywords": [
|
|
12392
|
+
"rest",
|
|
12393
|
+
"openapi",
|
|
12394
|
+
"GET",
|
|
12395
|
+
"Discovery",
|
|
12396
|
+
"v1",
|
|
12397
|
+
"services"
|
|
12398
|
+
],
|
|
12399
|
+
"maturity": "stable",
|
|
12400
|
+
"layer": "interface",
|
|
12401
|
+
"audiences": [
|
|
12402
|
+
"integrator",
|
|
12403
|
+
"service-agent",
|
|
12404
|
+
"coding-agent"
|
|
12405
|
+
],
|
|
12406
|
+
"interfaces": [
|
|
12407
|
+
{
|
|
12408
|
+
"type": "rest",
|
|
12409
|
+
"target": "GET /v1/services"
|
|
12410
|
+
},
|
|
12411
|
+
{
|
|
12412
|
+
"type": "openapi",
|
|
12413
|
+
"target": "/openapi.json"
|
|
12414
|
+
}
|
|
12415
|
+
],
|
|
12416
|
+
"references": [
|
|
12417
|
+
{
|
|
12418
|
+
"type": "source",
|
|
12419
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
12420
|
+
"relation": "openapi-source"
|
|
12421
|
+
},
|
|
12422
|
+
{
|
|
12423
|
+
"type": "documentation",
|
|
12424
|
+
"target": "docs/reference/rest-api.md",
|
|
12425
|
+
"relation": "endpoint-inventory"
|
|
12426
|
+
}
|
|
12427
|
+
],
|
|
12428
|
+
"methods": [
|
|
12429
|
+
"GET"
|
|
12430
|
+
],
|
|
12431
|
+
"tags": [
|
|
12432
|
+
"Discovery"
|
|
12433
|
+
],
|
|
12434
|
+
"operations": {
|
|
12435
|
+
"get": {
|
|
12436
|
+
"summary": "List all active daemon-owned REST services and their routes",
|
|
12437
|
+
"tags": [
|
|
12438
|
+
"Discovery"
|
|
12439
|
+
],
|
|
12440
|
+
"security": [],
|
|
12441
|
+
"description": "Agent-readable service inventory generated from this OpenAPI document. Every entry includes lifecycle ownership, whether it depends on an interactive session, all registered routes, and a readiness/status endpoint when one exists. /listen and /hangup affect voice sessions only and do not own the REST daemon.",
|
|
12442
|
+
"responses": {
|
|
12443
|
+
"200": {
|
|
12444
|
+
"description": "Active daemon and complete service catalog"
|
|
12445
|
+
}
|
|
12446
|
+
}
|
|
12447
|
+
}
|
|
12448
|
+
},
|
|
12449
|
+
"source_of_truth": [
|
|
12450
|
+
"GET /openapi.json",
|
|
12451
|
+
"packages/cli/src/api/openapi.ts"
|
|
12452
|
+
]
|
|
12453
|
+
},
|
|
12454
|
+
{
|
|
12455
|
+
"id": "api.v1-services-id",
|
|
12456
|
+
"kind": "api",
|
|
12457
|
+
"title": "/v1/services/{id}",
|
|
12458
|
+
"summary": "Get one daemon-owned REST service contract",
|
|
12459
|
+
"aliases": [
|
|
12460
|
+
"/v1/services/{id}"
|
|
12461
|
+
],
|
|
12462
|
+
"keywords": [
|
|
12463
|
+
"rest",
|
|
12464
|
+
"openapi",
|
|
12465
|
+
"GET",
|
|
12466
|
+
"Discovery",
|
|
12467
|
+
"v1",
|
|
12468
|
+
"services",
|
|
12469
|
+
"{id}"
|
|
12470
|
+
],
|
|
12471
|
+
"maturity": "stable",
|
|
12472
|
+
"layer": "interface",
|
|
12473
|
+
"audiences": [
|
|
12474
|
+
"integrator",
|
|
12475
|
+
"service-agent",
|
|
12476
|
+
"coding-agent"
|
|
12477
|
+
],
|
|
12478
|
+
"interfaces": [
|
|
12479
|
+
{
|
|
12480
|
+
"type": "rest",
|
|
12481
|
+
"target": "GET /v1/services/{id}"
|
|
12482
|
+
},
|
|
12483
|
+
{
|
|
12484
|
+
"type": "openapi",
|
|
12485
|
+
"target": "/openapi.json"
|
|
12486
|
+
}
|
|
12487
|
+
],
|
|
12488
|
+
"references": [
|
|
12489
|
+
{
|
|
12490
|
+
"type": "source",
|
|
12491
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
12492
|
+
"relation": "openapi-source"
|
|
12493
|
+
},
|
|
12494
|
+
{
|
|
12495
|
+
"type": "documentation",
|
|
12496
|
+
"target": "docs/reference/rest-api.md",
|
|
12497
|
+
"relation": "endpoint-inventory"
|
|
12498
|
+
}
|
|
12499
|
+
],
|
|
12500
|
+
"methods": [
|
|
12501
|
+
"GET"
|
|
12502
|
+
],
|
|
12503
|
+
"tags": [
|
|
12504
|
+
"Discovery"
|
|
12505
|
+
],
|
|
12506
|
+
"operations": {
|
|
12507
|
+
"get": {
|
|
12508
|
+
"summary": "Get one daemon-owned REST service contract",
|
|
12509
|
+
"tags": [
|
|
12510
|
+
"Discovery"
|
|
12511
|
+
],
|
|
12512
|
+
"security": [],
|
|
12513
|
+
"parameters": [
|
|
12514
|
+
{
|
|
12515
|
+
"name": "id",
|
|
12516
|
+
"in": "path",
|
|
12517
|
+
"required": true,
|
|
12518
|
+
"schema": {
|
|
12519
|
+
"type": "string"
|
|
12520
|
+
},
|
|
12521
|
+
"description": "Service id from GET /v1/services"
|
|
12522
|
+
}
|
|
12523
|
+
],
|
|
12524
|
+
"responses": {
|
|
12525
|
+
"200": {
|
|
12526
|
+
"description": "Service lifecycle, availability, readiness, and routes"
|
|
12527
|
+
},
|
|
12528
|
+
"404": {
|
|
12529
|
+
"description": "Unknown service id"
|
|
12530
|
+
}
|
|
12531
|
+
}
|
|
12532
|
+
}
|
|
12533
|
+
},
|
|
12534
|
+
"source_of_truth": [
|
|
12535
|
+
"GET /openapi.json",
|
|
12536
|
+
"packages/cli/src/api/openapi.ts"
|
|
12537
|
+
]
|
|
12538
|
+
},
|
|
12383
12539
|
{
|
|
12384
12540
|
"id": "api.v1-services-systemd",
|
|
12385
12541
|
"kind": "api",
|
|
@@ -13663,7 +13819,7 @@
|
|
|
13663
13819
|
"tags": [
|
|
13664
13820
|
"Tools"
|
|
13665
13821
|
],
|
|
13666
|
-
"description": "Returns
|
|
13822
|
+
"description": "Returns every discovered tool, including unavailable tools with an availability reason, plus name, class, description, JSON-schema parameters, direct_callable, security policy {categories, risk, requires_scope, off_device_allowed, rationale}, and per-tool endpoint hrefs. Every available built-in is direct-callable through the shared policy gate. Filters: ?category=read|write|exec|network|hardware|agent|sensitive · ?scope=read|run|admin · ?risk=low|medium|high|critical. Pagination via ?limit=N&offset=N (default limit=50; pass limit=200 to see all).",
|
|
13667
13823
|
"responses": {
|
|
13668
13824
|
"200": {
|
|
13669
13825
|
"description": "Paginated tools with security metadata"
|
|
@@ -13853,7 +14009,7 @@
|
|
|
13853
14009
|
"tags": [
|
|
13854
14010
|
"Tools"
|
|
13855
14011
|
],
|
|
13856
|
-
"description": "Body: {args: object, working_dir?: string}. The `args` key is canonical (Q4) — the JSON-schema in /v1/tools/{name} `parameters` describes what goes INSIDE the args wrapper. Returns ToolResult {success, output, llmContent?, error?, durationMs} plus security metadata. Auth gating: request scope (read/run/admin) must satisfy tool.requires_scope; non-loopback callers need admin scope unless tool.off_device_allowed=true.
|
|
14012
|
+
"description": "Body: {args: object, working_dir?: string}. The `args` key is canonical (Q4) — the JSON-schema in /v1/tools/{name} `parameters` describes what goes INSIDE the args wrapper. Every available built-in and registered external tool is callable here. Returns ToolResult {success, output, llmContent?, error?, durationMs} plus security metadata. Auth gating: request scope (read/run/admin) must satisfy tool.requires_scope; non-loopback callers need admin scope unless tool.off_device_allowed=true.",
|
|
13857
14013
|
"parameters": [
|
|
13858
14014
|
{
|
|
13859
14015
|
"name": "name",
|
|
@@ -15989,6 +16145,352 @@
|
|
|
15989
16145
|
"packages/cli/src/api/openapi.ts"
|
|
15990
16146
|
]
|
|
15991
16147
|
},
|
|
16148
|
+
{
|
|
16149
|
+
"id": "api.v1-web-crawl",
|
|
16150
|
+
"kind": "api",
|
|
16151
|
+
"title": "/v1/web/crawl",
|
|
16152
|
+
"summary": "Inspect web-crawl availability, schema, and security policy; Crawl a website directly through the Omnius tool runtime",
|
|
16153
|
+
"aliases": [
|
|
16154
|
+
"/v1/web/crawl"
|
|
16155
|
+
],
|
|
16156
|
+
"keywords": [
|
|
16157
|
+
"rest",
|
|
16158
|
+
"openapi",
|
|
16159
|
+
"GET",
|
|
16160
|
+
"POST",
|
|
16161
|
+
"Web",
|
|
16162
|
+
"Tools",
|
|
16163
|
+
"v1",
|
|
16164
|
+
"web",
|
|
16165
|
+
"crawl"
|
|
16166
|
+
],
|
|
16167
|
+
"maturity": "stable",
|
|
16168
|
+
"layer": "interface",
|
|
16169
|
+
"audiences": [
|
|
16170
|
+
"integrator",
|
|
16171
|
+
"service-agent",
|
|
16172
|
+
"coding-agent"
|
|
16173
|
+
],
|
|
16174
|
+
"interfaces": [
|
|
16175
|
+
{
|
|
16176
|
+
"type": "rest",
|
|
16177
|
+
"target": "GET /v1/web/crawl"
|
|
16178
|
+
},
|
|
16179
|
+
{
|
|
16180
|
+
"type": "rest",
|
|
16181
|
+
"target": "POST /v1/web/crawl"
|
|
16182
|
+
},
|
|
16183
|
+
{
|
|
16184
|
+
"type": "openapi",
|
|
16185
|
+
"target": "/openapi.json"
|
|
16186
|
+
}
|
|
16187
|
+
],
|
|
16188
|
+
"references": [
|
|
16189
|
+
{
|
|
16190
|
+
"type": "source",
|
|
16191
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
16192
|
+
"relation": "openapi-source"
|
|
16193
|
+
},
|
|
16194
|
+
{
|
|
16195
|
+
"type": "documentation",
|
|
16196
|
+
"target": "docs/reference/rest-api.md",
|
|
16197
|
+
"relation": "endpoint-inventory"
|
|
16198
|
+
}
|
|
16199
|
+
],
|
|
16200
|
+
"methods": [
|
|
16201
|
+
"GET",
|
|
16202
|
+
"POST"
|
|
16203
|
+
],
|
|
16204
|
+
"tags": [
|
|
16205
|
+
"Web",
|
|
16206
|
+
"Tools"
|
|
16207
|
+
],
|
|
16208
|
+
"operations": {
|
|
16209
|
+
"get": {
|
|
16210
|
+
"summary": "Inspect web-crawl availability, schema, and security policy",
|
|
16211
|
+
"tags": [
|
|
16212
|
+
"Web",
|
|
16213
|
+
"Tools"
|
|
16214
|
+
],
|
|
16215
|
+
"responses": {
|
|
16216
|
+
"200": {
|
|
16217
|
+
"description": "web_crawl capability metadata"
|
|
16218
|
+
}
|
|
16219
|
+
}
|
|
16220
|
+
},
|
|
16221
|
+
"post": {
|
|
16222
|
+
"summary": "Crawl a website directly through the Omnius tool runtime",
|
|
16223
|
+
"tags": [
|
|
16224
|
+
"Web",
|
|
16225
|
+
"Tools"
|
|
16226
|
+
],
|
|
16227
|
+
"description": "Stable alias for POST /v1/tools/web_crawl/call. Shared tool security applies; browser-backed crawling requires the runtime dependencies reported by GET.",
|
|
16228
|
+
"responses": {
|
|
16229
|
+
"200": {
|
|
16230
|
+
"description": "ToolResult crawl response"
|
|
16231
|
+
},
|
|
16232
|
+
"403": {
|
|
16233
|
+
"description": "Policy denied"
|
|
16234
|
+
},
|
|
16235
|
+
"500": {
|
|
16236
|
+
"description": "Crawl failed"
|
|
16237
|
+
}
|
|
16238
|
+
}
|
|
16239
|
+
}
|
|
16240
|
+
},
|
|
16241
|
+
"source_of_truth": [
|
|
16242
|
+
"GET /openapi.json",
|
|
16243
|
+
"packages/cli/src/api/openapi.ts"
|
|
16244
|
+
]
|
|
16245
|
+
},
|
|
16246
|
+
{
|
|
16247
|
+
"id": "api.v1-web-fetch",
|
|
16248
|
+
"kind": "api",
|
|
16249
|
+
"title": "/v1/web/fetch",
|
|
16250
|
+
"summary": "Inspect web-fetch availability, schema, and security policy; Fetch a URL directly through the Omnius tool runtime",
|
|
16251
|
+
"aliases": [
|
|
16252
|
+
"/v1/web/fetch"
|
|
16253
|
+
],
|
|
16254
|
+
"keywords": [
|
|
16255
|
+
"rest",
|
|
16256
|
+
"openapi",
|
|
16257
|
+
"GET",
|
|
16258
|
+
"POST",
|
|
16259
|
+
"Web",
|
|
16260
|
+
"Tools",
|
|
16261
|
+
"v1",
|
|
16262
|
+
"web",
|
|
16263
|
+
"fetch"
|
|
16264
|
+
],
|
|
16265
|
+
"maturity": "stable",
|
|
16266
|
+
"layer": "interface",
|
|
16267
|
+
"audiences": [
|
|
16268
|
+
"integrator",
|
|
16269
|
+
"service-agent",
|
|
16270
|
+
"coding-agent"
|
|
16271
|
+
],
|
|
16272
|
+
"interfaces": [
|
|
16273
|
+
{
|
|
16274
|
+
"type": "rest",
|
|
16275
|
+
"target": "GET /v1/web/fetch"
|
|
16276
|
+
},
|
|
16277
|
+
{
|
|
16278
|
+
"type": "rest",
|
|
16279
|
+
"target": "POST /v1/web/fetch"
|
|
16280
|
+
},
|
|
16281
|
+
{
|
|
16282
|
+
"type": "openapi",
|
|
16283
|
+
"target": "/openapi.json"
|
|
16284
|
+
}
|
|
16285
|
+
],
|
|
16286
|
+
"references": [
|
|
16287
|
+
{
|
|
16288
|
+
"type": "source",
|
|
16289
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
16290
|
+
"relation": "openapi-source"
|
|
16291
|
+
},
|
|
16292
|
+
{
|
|
16293
|
+
"type": "documentation",
|
|
16294
|
+
"target": "docs/reference/rest-api.md",
|
|
16295
|
+
"relation": "endpoint-inventory"
|
|
16296
|
+
}
|
|
16297
|
+
],
|
|
16298
|
+
"methods": [
|
|
16299
|
+
"GET",
|
|
16300
|
+
"POST"
|
|
16301
|
+
],
|
|
16302
|
+
"tags": [
|
|
16303
|
+
"Web",
|
|
16304
|
+
"Tools"
|
|
16305
|
+
],
|
|
16306
|
+
"operations": {
|
|
16307
|
+
"get": {
|
|
16308
|
+
"summary": "Inspect web-fetch availability, schema, and security policy",
|
|
16309
|
+
"tags": [
|
|
16310
|
+
"Web",
|
|
16311
|
+
"Tools"
|
|
16312
|
+
],
|
|
16313
|
+
"responses": {
|
|
16314
|
+
"200": {
|
|
16315
|
+
"description": "web_fetch capability metadata"
|
|
16316
|
+
}
|
|
16317
|
+
}
|
|
16318
|
+
},
|
|
16319
|
+
"post": {
|
|
16320
|
+
"summary": "Fetch a URL directly through the Omnius tool runtime",
|
|
16321
|
+
"tags": [
|
|
16322
|
+
"Web",
|
|
16323
|
+
"Tools"
|
|
16324
|
+
],
|
|
16325
|
+
"description": "Stable alias for POST /v1/tools/web_fetch/call. Body: {args:{url:string}}. Shared tool security and network-egress policy apply.",
|
|
16326
|
+
"responses": {
|
|
16327
|
+
"200": {
|
|
16328
|
+
"description": "ToolResult fetch response"
|
|
16329
|
+
},
|
|
16330
|
+
"403": {
|
|
16331
|
+
"description": "Policy denied"
|
|
16332
|
+
},
|
|
16333
|
+
"500": {
|
|
16334
|
+
"description": "Fetch failed"
|
|
16335
|
+
}
|
|
16336
|
+
}
|
|
16337
|
+
}
|
|
16338
|
+
},
|
|
16339
|
+
"source_of_truth": [
|
|
16340
|
+
"GET /openapi.json",
|
|
16341
|
+
"packages/cli/src/api/openapi.ts"
|
|
16342
|
+
]
|
|
16343
|
+
},
|
|
16344
|
+
{
|
|
16345
|
+
"id": "api.v1-web-search",
|
|
16346
|
+
"kind": "api",
|
|
16347
|
+
"title": "/v1/web/search",
|
|
16348
|
+
"summary": "Inspect web-search availability, schema, and security policy; Search the web directly through the Omnius tool runtime",
|
|
16349
|
+
"aliases": [
|
|
16350
|
+
"/v1/web/search"
|
|
16351
|
+
],
|
|
16352
|
+
"keywords": [
|
|
16353
|
+
"rest",
|
|
16354
|
+
"openapi",
|
|
16355
|
+
"GET",
|
|
16356
|
+
"POST",
|
|
16357
|
+
"Web",
|
|
16358
|
+
"Tools",
|
|
16359
|
+
"v1",
|
|
16360
|
+
"web",
|
|
16361
|
+
"search"
|
|
16362
|
+
],
|
|
16363
|
+
"maturity": "stable",
|
|
16364
|
+
"layer": "interface",
|
|
16365
|
+
"audiences": [
|
|
16366
|
+
"integrator",
|
|
16367
|
+
"service-agent",
|
|
16368
|
+
"coding-agent"
|
|
16369
|
+
],
|
|
16370
|
+
"interfaces": [
|
|
16371
|
+
{
|
|
16372
|
+
"type": "rest",
|
|
16373
|
+
"target": "GET /v1/web/search"
|
|
16374
|
+
},
|
|
16375
|
+
{
|
|
16376
|
+
"type": "rest",
|
|
16377
|
+
"target": "POST /v1/web/search"
|
|
16378
|
+
},
|
|
16379
|
+
{
|
|
16380
|
+
"type": "openapi",
|
|
16381
|
+
"target": "/openapi.json"
|
|
16382
|
+
}
|
|
16383
|
+
],
|
|
16384
|
+
"references": [
|
|
16385
|
+
{
|
|
16386
|
+
"type": "source",
|
|
16387
|
+
"target": "packages/cli/src/api/openapi.ts",
|
|
16388
|
+
"relation": "openapi-source"
|
|
16389
|
+
},
|
|
16390
|
+
{
|
|
16391
|
+
"type": "documentation",
|
|
16392
|
+
"target": "docs/reference/rest-api.md",
|
|
16393
|
+
"relation": "endpoint-inventory"
|
|
16394
|
+
}
|
|
16395
|
+
],
|
|
16396
|
+
"methods": [
|
|
16397
|
+
"GET",
|
|
16398
|
+
"POST"
|
|
16399
|
+
],
|
|
16400
|
+
"tags": [
|
|
16401
|
+
"Web",
|
|
16402
|
+
"Tools"
|
|
16403
|
+
],
|
|
16404
|
+
"operations": {
|
|
16405
|
+
"get": {
|
|
16406
|
+
"summary": "Inspect web-search availability, schema, and security policy",
|
|
16407
|
+
"tags": [
|
|
16408
|
+
"Web",
|
|
16409
|
+
"Tools"
|
|
16410
|
+
],
|
|
16411
|
+
"description": "Stable alias for GET /v1/tools/web_search.",
|
|
16412
|
+
"responses": {
|
|
16413
|
+
"200": {
|
|
16414
|
+
"description": "web_search capability metadata"
|
|
16415
|
+
},
|
|
16416
|
+
"404": {
|
|
16417
|
+
"description": "web_search runtime unavailable"
|
|
16418
|
+
}
|
|
16419
|
+
}
|
|
16420
|
+
},
|
|
16421
|
+
"post": {
|
|
16422
|
+
"summary": "Search the web directly through the Omnius tool runtime",
|
|
16423
|
+
"tags": [
|
|
16424
|
+
"Web",
|
|
16425
|
+
"Tools"
|
|
16426
|
+
],
|
|
16427
|
+
"description": "Stable alias for POST /v1/tools/web_search/call. Uses the same auth, profile, origin, timeout, output-size, and audit policy. Body example: {\"args\":{\"query\":\"CUDA ASR on Jetson\",\"num_results\":5,\"provider\":\"duckduckgo\"}}. No search API key is required.",
|
|
16428
|
+
"requestBody": {
|
|
16429
|
+
"required": true,
|
|
16430
|
+
"content": {
|
|
16431
|
+
"application/json": {
|
|
16432
|
+
"schema": {
|
|
16433
|
+
"type": "object",
|
|
16434
|
+
"required": [
|
|
16435
|
+
"args"
|
|
16436
|
+
],
|
|
16437
|
+
"properties": {
|
|
16438
|
+
"args": {
|
|
16439
|
+
"type": "object",
|
|
16440
|
+
"required": [
|
|
16441
|
+
"query"
|
|
16442
|
+
],
|
|
16443
|
+
"properties": {
|
|
16444
|
+
"query": {
|
|
16445
|
+
"type": "string"
|
|
16446
|
+
},
|
|
16447
|
+
"num_results": {
|
|
16448
|
+
"type": "integer",
|
|
16449
|
+
"minimum": 1
|
|
16450
|
+
},
|
|
16451
|
+
"provider": {
|
|
16452
|
+
"type": "string",
|
|
16453
|
+
"enum": [
|
|
16454
|
+
"duckduckgo"
|
|
16455
|
+
]
|
|
16456
|
+
}
|
|
16457
|
+
}
|
|
16458
|
+
},
|
|
16459
|
+
"session_id": {
|
|
16460
|
+
"type": "string"
|
|
16461
|
+
},
|
|
16462
|
+
"profile": {
|
|
16463
|
+
"type": "string"
|
|
16464
|
+
},
|
|
16465
|
+
"timeout_ms": {
|
|
16466
|
+
"type": "integer"
|
|
16467
|
+
}
|
|
16468
|
+
}
|
|
16469
|
+
}
|
|
16470
|
+
}
|
|
16471
|
+
}
|
|
16472
|
+
},
|
|
16473
|
+
"responses": {
|
|
16474
|
+
"200": {
|
|
16475
|
+
"description": "ToolResult search response"
|
|
16476
|
+
},
|
|
16477
|
+
"400": {
|
|
16478
|
+
"description": "Invalid request"
|
|
16479
|
+
},
|
|
16480
|
+
"403": {
|
|
16481
|
+
"description": "Policy denied"
|
|
16482
|
+
},
|
|
16483
|
+
"500": {
|
|
16484
|
+
"description": "Search failed"
|
|
16485
|
+
}
|
|
16486
|
+
}
|
|
16487
|
+
}
|
|
16488
|
+
},
|
|
16489
|
+
"source_of_truth": [
|
|
16490
|
+
"GET /openapi.json",
|
|
16491
|
+
"packages/cli/src/api/openapi.ts"
|
|
16492
|
+
]
|
|
16493
|
+
},
|
|
15992
16494
|
{
|
|
15993
16495
|
"id": "api.version",
|
|
15994
16496
|
"kind": "api",
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -189,6 +189,8 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
189
189
|
| `api.v1-scheduled-kill` | /v1/scheduled/kill | Kill a running scheduled job |
|
|
190
190
|
| `api.v1-scheduled-reconcile` | /v1/scheduled/reconcile | Preview reconciliation of persisted and legacy scheduled jobs; Preview or apply scheduled-job reconciliation |
|
|
191
191
|
| `api.v1-scheduled-status` | /v1/scheduled/status | Status of scheduled job runner |
|
|
192
|
+
| `api.v1-services` | /v1/services | List all active daemon-owned REST services and their routes |
|
|
193
|
+
| `api.v1-services-id` | /v1/services/{id} | Get one daemon-owned REST service contract |
|
|
192
194
|
| `api.v1-services-systemd` | /v1/services/systemd | Systemd service status (where supported) |
|
|
193
195
|
| `api.v1-services-systemd-unit` | /v1/services/systemd/{unit} | Perform an action on one user-level systemd unit |
|
|
194
196
|
| `api.v1-sessions` | /v1/sessions | List Omnius task sessions |
|
|
@@ -228,6 +230,9 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
228
230
|
| `api.v1-voice-transcribe-stream` | /v1/voice/transcribe/stream | Isolated final ASR over Server-Sent Events |
|
|
229
231
|
| `api.v1-voice-tts` | /v1/voice/tts | Synthesize text to audio bytes |
|
|
230
232
|
| `api.v1-voicechat-ws` | /v1/voicechat/ws | WebSocket — full-duplex voicechat (binary PCM + JSON control) |
|
|
233
|
+
| `api.v1-web-crawl` | /v1/web/crawl | Inspect web-crawl availability, schema, and security policy; Crawl a website directly through the Omnius tool runtime |
|
|
234
|
+
| `api.v1-web-fetch` | /v1/web/fetch | Inspect web-fetch availability, schema, and security policy; Fetch a URL directly through the Omnius tool runtime |
|
|
235
|
+
| `api.v1-web-search` | /v1/web/search | Inspect web-search availability, schema, and security policy; Search the web directly through the Omnius tool runtime |
|
|
231
236
|
| `api.version` | /version | Package, API, and discovery contract versions |
|
|
232
237
|
|
|
233
238
|
## Capability
|