openvibers/openvibe.contracts Commits

v0.29.0: OpenVibe.AI is alpha — ai.run.create, ai.run.read, ai.workflow.manage, ai.provider.manage, ai.usage.read

OP OpenVibers committed 23 Sept 2026 · d8b43bc084 · 7 files, +145 −6


Changes

ddiff --git a/manifests/capabilities/ai.provider.manage.json b/manifests/capabilities/ai.provider.manage.json
nnew file mode 100644
iindex 00000000..aaf3d72b
---- /dev/null
++++ b/manifests/capabilities/ai.provider.manage.json
@@@ -0,0 +1,27 @@
++{
++ "id": "ai.provider.manage",
++ "version": "1.0",
++ "owner": "ai",
++ "status": "active",
++ "visibility": "internal",
++ "description": "Register, update, enable and disable providers and models (secrets only as env references, never values), reset circuit breakers, set quotas and purge the cache.",
++ "permissions": [
++ "ai:admin"
++ ],
++ "resourceConstraints": [
++ "none"
++ ],
++ "quotaClass": "ai-admin",
++ "events": [],
++ "implementedBy": [
++ "POST /api/v1/providers",
++ "PATCH /api/v1/providers/:key",
++ "POST /api/v1/providers/:key/disable",
++ "POST /api/v1/providers/:key/enable",
++ "POST /api/v1/providers/:key/reset",
++ "POST /api/v1/models",
++ "PATCH /api/v1/models/:provider/:model",
++ "POST /api/v1/quotas",
++ "DELETE /api/v1/cache"
++ ]
++}
ddiff --git a/manifests/capabilities/ai.run.create.json b/manifests/capabilities/ai.run.create.json
nnew file mode 100644
iindex 00000000..60cb7618
---- /dev/null
++++ b/manifests/capabilities/ai.run.create.json
@@@ -0,0 +1,30 @@
++{
++ "id": "ai.run.create",
++ "version": "1.0",
++ "owner": "ai",
++ "status": "active",
++ "visibility": "first-party",
++ "description": "Create workflow runs (POST /api/v1/runs and the direct chat/generate/summarize/classify/extract/enrich/embed operations), cancel or retry the caller's own runs and attach citations to them. A token's `ns` claim limits which workflow namespaces it may run (live.*, wiki.*, ...). Quotas are checked before any provider call.",
++ "permissions": [
++ "ai:run"
++ ],
++ "resourceConstraints": [
++ "namespace",
++ "owner"
++ ],
++ "quotaClass": "ai-run",
++ "events": [],
++ "implementedBy": [
++ "POST /api/v1/runs",
++ "POST /api/v1/runs/:id/cancel",
++ "POST /api/v1/runs/:id/retry",
++ "POST /api/v1/runs/:id/citations",
++ "POST /api/v1/chat",
++ "POST /api/v1/generate",
++ "POST /api/v1/summarize",
++ "POST /api/v1/classify",
++ "POST /api/v1/extract",
++ "POST /api/v1/enrich",
++ "POST /api/v1/embed"
++ ]
++}
ddiff --git a/manifests/capabilities/ai.run.read.json b/manifests/capabilities/ai.run.read.json
nnew file mode 100644
iindex 00000000..b07eb1b3
---- /dev/null
++++ b/manifests/capabilities/ai.run.read.json
@@@ -0,0 +1,21 @@
++{
++ "id": "ai.run.read",
++ "version": "1.0",
++ "owner": "ai",
++ "status": "active",
++ "visibility": "first-party",
++ "description": "Read the caller's own runs, their citations and request-log metadata (hashes, tokens, latency; never raw prompts).",
++ "permissions": [
++ "ai:read"
++ ],
++ "resourceConstraints": [
++ "owner"
++ ],
++ "quotaClass": "ai-read",
++ "events": [],
++ "implementedBy": [
++ "GET /api/v1/runs",
++ "GET /api/v1/runs/:id",
++ "GET /api/v1/runs/:id/citations"
++ ]
++}
ddiff --git a/manifests/capabilities/ai.usage.read.json b/manifests/capabilities/ai.usage.read.json
nnew file mode 100644
iindex 00000000..e9f564c9
---- /dev/null
++++ b/manifests/capabilities/ai.usage.read.json
@@@ -0,0 +1,26 @@
++{
++ "id": "ai.usage.read",
++ "version": "1.0",
++ "owner": "ai",
++ "status": "active",
++ "visibility": "internal",
++ "description": "Read usage, quota windows, request logs, the audit log, cache statistics, the admin summary and any caller's runs.",
++ "permissions": [
++ "ai:read"
++ ],
++ "resourceConstraints": [
++ "none"
++ ],
++ "quotaClass": "ai-read",
++ "events": [],
++ "implementedBy": [
++ "GET /api/v1/status",
++ "GET /api/v1/usage",
++ "GET /api/v1/quotas",
++ "GET /api/v1/requests",
++ "GET /api/v1/audit",
++ "GET /api/v1/cache",
++ "GET /api/v1/providers",
++ "GET /api/v1/models"
++ ]
++}
ddiff --git a/manifests/capabilities/ai.workflow.manage.json b/manifests/capabilities/ai.workflow.manage.json
nnew file mode 100644
iindex 00000000..dad462de
---- /dev/null
++++ b/manifests/capabilities/ai.workflow.manage.json
@@@ -0,0 +1,24 @@
++{
++ "id": "ai.workflow.manage",
++ "version": "1.0",
++ "owner": "ai",
++ "status": "active",
++ "visibility": "internal",
++ "description": "Create new versions of prompt templates, workflow definitions and routing profiles, and change their lifecycle status (draft, active, deprecated, archived; routes active/disabled). Every change is audited; edits never overwrite a version.",
++ "permissions": [
++ "ai:admin"
++ ],
++ "resourceConstraints": [
++ "none"
++ ],
++ "quotaClass": "ai-admin",
++ "events": [],
++ "implementedBy": [
++ "POST /api/v1/templates/:key/versions",
++ "POST /api/v1/templates/:key/versions/:version/status",
++ "POST /api/v1/workflows/:key/versions",
++ "POST /api/v1/workflows/:key/versions/:version/status",
++ "POST /api/v1/routes/:key/versions",
++ "POST /api/v1/routes/:key/versions/:version/status"
++ ]
++}
ddiff --git a/manifests/services/ai.json b/manifests/services/ai.json
iindex 05773aa2..8023402f 100644
---- a/manifests/services/ai.json
++++ b/manifests/services/ai.json
@@@ -1,16 +1,27 @@
{
"version": "0.1.0",
"contractRanges": {
-- "openvibe-contracts": "^0.1.0"
++ "openvibe-contracts": ">=0.6.0 <1.0.0"
},
"id": "ai",
"name": "OpenVibe.AI",
-- "status": "placeholder",
++ "status": "alpha",
"repository": "OpenVibers/OpenVibe.AI",
-- "domains": [],
-- "capabilities": [],
++ "domains": [
++ "ai.openvibe.network"
++ ],
++ "publicOrigin": "https://ai.openvibe.network",
++ "health": "/api/health",
++ "ready": "/api/ready",
++ "capabilities": [
++ "ai.run.create",
++ "ai.run.read",
++ "ai.workflow.manage",
++ "ai.provider.manage",
++ "ai.usage.read"
++ ],
"eventsProduced": [],
"eventsConsumed": [],
"namespacesOwned": [],
-- "notes": "Providers, models, routing, prompt templates, workflows, runs, citations, cache and quotas for every product. Charter only; no runtime."
++ "notes": "Providers, models, routing profiles, versioned prompt templates and workflows, runs, request logs, citations, scoped cache, quotas and audit. Workflow output is a draft/evidence package attributed to workflow + model + run. ai.run.queued|succeeded|failed|cached events follow once the Events client is wired in."
}
ddiff --git a/package.json b/package.json
iindex 34b76200..a4bd8351 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.28.0",
++ "version": "0.29.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"types": "generated/typescript/index.d.ts",