openvibers/openvibe.contracts Commits

0.345.0: actor.approval-answer@1 and the device approval kinds (HO12) (#353)

OP OpenVibers committed 5 days ago · da37fa2b4d · 62 files, +3699 −408

The person's answer to an approval that asked for the camera or location:
decision answer, exactly one of photo (a Media object id) or location
(lat -90..90, lng -180..180, accuracy_m 0..100000, precise; a coarse
share carries at most two decimals). actor.skill@1 (1.1.0) and @2
(2.1.0) gain device.camera, device.location and device.notify in
requires.kinds. Additive; compat vs origin/main reports no breaking
change.

Checked: npm run generate, the whole suite (27,819 checks), gitleaks.

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 8c9220e6..817d6b38 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,20 @@
# Changelog
++## 0.345.0 — 2026-11-08
++
++- Add `actor.approval-answer@1` (plan HO12, the phone as the agent's eyes and hands): the person's answer to an
++ approval that asked for the phone's camera or its location. The person does the thing themselves, and the answer
++ carries the result back to the step as untrusted input. `decision` is `answer`, and exactly one of:
++ - `photo`: `media_id`, a private Media object the person took in the system camera (JPEG, PNG or WebP, at most
++ 10 MB, EXIF stripped by Actor); the step reaches it through a short-lived signed URL;
++ - `location`: `lat` -90 to 90, `lng` -180 to 180, `accuracy_m` 0 to 100000 metres and `precise`. A coarse answer
++ (`precise` false) carries `lat` and `lng` to at most two decimals; JSON Schema cannot count decimal places, so
++ Actor rounds the share and the repository's suite checks the rule.
++ The answer has no `secret`, `token` or `url` field, and a decline stays the ordinary denial.
++- `actor.skill@1` (1.1.0) and `actor.skill@2` (2.1.0) gain `device.camera`, `device.location` and `device.notify` in
++ `requires.kinds`, so a skill's steps may be one of those approvals like any other HO1 kind. Additive: nothing that
++ exists today changes shape.
++
## 0.344.0 — 2026-11-08
- `actor.trigger@1` (1.2.0) gains the mention kind (plan HO13, standing intents): a trigger that waits for the person
ddiff --git a/contracts/actor/approval-answer.v1.json b/contracts/actor/approval-answer.v1.json
nnew file mode 100644
iindex 00000000..715386b6
---- /dev/null
++++ b/contracts/actor/approval-answer.v1.json
@@@ -0,0 +1,79 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/actor/approval-answer.v1.json",
++ "title": "ActorApprovalAnswer",
++ "description": "actor.approval-answer@1: the person's answer to a device approval (plan HO12, the phone as the agent's eyes and hands). The agent asked for the phone's camera or its location, the person did the thing themselves after reading why, and this document carries the result back to the step as untrusted input, never as an instruction. DECISION is \"answer\"; declining an approval stays the ordinary denial and is not this document. Exactly one of PHOTO and LOCATION is present. PHOTO is a private Media object the person took in the system camera (JPEG, PNG or WebP, at most 10 MB, EXIF stripped by Actor): a picture of the world, not a secret, a token or a URL. LOCATION is shared once, after the person allowed it: LAT is -90 to 90, LNG -180 to 180 and ACCURACY_M is 0 to 100000 metres. PRECISE is true only when the step asked for precise and the person allowed it; when it is false the share is coarse and LAT and LNG carry at most two decimals (about a kilometre). JSON Schema cannot count decimal places, so the two-decimal rule lives in the description, is enforced by Actor and is checked by this repository's suite.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "decision"
++ ],
++ "properties": {
++ "decision": {
++ "const": "answer",
++ "description": "The only decision this document carries: the person answered the ask. A decline is the approval's ordinary denial, not a data-carrying answer."
++ },
++ "photo": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "media_id"
++ ],
++ "description": "The photo the person took in the system camera after reading why. It is stored as a private Media object in Actor's tenant, and the step reaches it through a short-lived signed URL; this document carries only the object's id.",
++ "properties": {
++ "media_id": {
++ "type": "string",
++ "pattern": "^med_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The private Media object holding the photo (media.object@1's id: med_<ULID>)."
++ }
++ }
++ },
++ "location": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "lat",
++ "lng",
++ "accuracy_m",
++ "precise"
++ ],
++ "description": "The place the person shared once. When PRECISE is false, LAT and LNG carry at most two decimals (about a kilometre); JSON Schema cannot count decimal places, so Actor enforces the rounding and the repository's suite holds it. A precise location is shared only when the step asked for it and the person allowed it.",
++ "properties": {
++ "lat": {
++ "type": "number",
++ "minimum": -90,
++ "maximum": 90,
++ "description": "Latitude in degrees, -90 to 90."
++ },
++ "lng": {
++ "type": "number",
++ "minimum": -180,
++ "maximum": 180,
++ "description": "Longitude in degrees, -180 to 180."
++ },
++ "accuracy_m": {
++ "type": "number",
++ "minimum": 0,
++ "maximum": 100000,
++ "description": "The device's accuracy radius in metres, 0 to 100000."
++ },
++ "precise": {
++ "type": "boolean",
++ "description": "True only when the step asked for a precise location and the person allowed it; false for a one-time coarse share (LAT and LNG at most two decimals)."
++ }
++ }
++ }
++ },
++ "oneOf": [
++ {
++ "required": [
++ "photo"
++ ]
++ },
++ {
++ "required": [
++ "location"
++ ]
++ }
++ ]
++}
ddiff --git a/contracts/actor/skill.v1.json b/contracts/actor/skill.v1.json
iindex 661c0463..c1f4a015 100644
---- a/contracts/actor/skill.v1.json
++++ b/contracts/actor/skill.v1.json
@@@ -89,7 +89,7 @@
"properties": {
"kinds": {
"type": "array",
-- "maxItems": 15,
++ "maxItems": 18,
"uniqueItems": true,
"items": {
"type": "string",
@@@ -108,7 +108,10 @@
"send",
"install",
"routine",
-- "money"
++ "money",
++ "device.camera",
++ "device.location",
++ "device.notify"
]
},
"description": "The kinds of act (actor approvals, HO1) its steps may be."
ddiff --git a/contracts/actor/skill.v2.json b/contracts/actor/skill.v2.json
iindex 3fe08176..346469fc 100644
---- a/contracts/actor/skill.v2.json
++++ b/contracts/actor/skill.v2.json
@@@ -271,7 +271,7 @@
"properties": {
"kinds": {
"type": "array",
-- "maxItems": 16,
++ "maxItems": 19,
"uniqueItems": true,
"items": {
"type": "string",
@@@ -291,6 +291,9 @@
"install",
"routine",
"money",
++ "device.camera",
++ "device.location",
++ "device.notify",
"skill.run"
]
},
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex 8ecaeecf..888884bb 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -10001,7 +10001,7 @@
},
{
"id": "actor.skill",
-- "version": "1.0.0",
++ "version": "1.1.0",
"owner": "actor",
"schema": "actor/skill.v1.json",
"visibility": "public",
@@@ -10011,7 +10011,7 @@
},
{
"id": "actor.skill",
-- "version": "2.0.0",
++ "version": "2.1.0",
"owner": "actor",
"schema": "actor/skill.v2.json",
"visibility": "public",
@@@ -10019,6 +10019,15 @@
"status": "active",
"adr": "ADR-060"
},
++ {
++ "id": "actor.approval-answer",
++ "version": "1.0.0",
++ "owner": "actor",
++ "schema": "actor/approval-answer.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
{
"id": "frame.menu-card",
"version": "1.0.0",
ddiff --git a/fixtures/actor.approval-answer/invalid/coarse-four-decimals.json b/fixtures/actor.approval-answer/invalid/coarse-four-decimals.json
nnew file mode 100644
iindex 00000000..f09ac274
---- /dev/null
++++ b/fixtures/actor.approval-answer/invalid/coarse-four-decimals.json
@@@ -0,0 +1,9 @@
++{
++ "decision": "answer",
++ "location": {
++ "lat": 52.3676,
++ "lng": 4.9041,
++ "accuracy_m": 1200,
++ "precise": false
++ }
++}
ddiff --git a/fixtures/actor.approval-answer/invalid/extra-field.json b/fixtures/actor.approval-answer/invalid/extra-field.json
nnew file mode 100644
iindex 00000000..b2d92665
---- /dev/null
++++ b/fixtures/actor.approval-answer/invalid/extra-field.json
@@@ -0,0 +1,7 @@
++{
++ "decision": "answer",
++ "photo": {
++ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"
++ },
++ "note": "an extra field is never part of an answer"
++}
ddiff --git a/fixtures/actor.approval-answer/invalid/lat-91.json b/fixtures/actor.approval-answer/invalid/lat-91.json
nnew file mode 100644
iindex 00000000..a4a92ae4
---- /dev/null
++++ b/fixtures/actor.approval-answer/invalid/lat-91.json
@@@ -0,0 +1,9 @@
++{
++ "decision": "answer",
++ "location": {
++ "lat": 91,
++ "lng": 4.76,
++ "accuracy_m": 8,
++ "precise": true
++ }
++}
ddiff --git a/fixtures/actor.approval-answer/invalid/photo-and-location.json b/fixtures/actor.approval-answer/invalid/photo-and-location.json
nnew file mode 100644
iindex 00000000..810fd6bf
---- /dev/null
++++ b/fixtures/actor.approval-answer/invalid/photo-and-location.json
@@@ -0,0 +1,12 @@
++{
++ "decision": "answer",
++ "photo": {
++ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"
++ },
++ "location": {
++ "lat": 52.31,
++ "lng": 4.76,
++ "accuracy_m": 1200,
++ "precise": false
++ }
++}
ddiff --git a/fixtures/actor.approval-answer/valid/location-coarse.json b/fixtures/actor.approval-answer/valid/location-coarse.json
nnew file mode 100644
iindex 00000000..9a65e75b
---- /dev/null
++++ b/fixtures/actor.approval-answer/valid/location-coarse.json
@@@ -0,0 +1,9 @@
++{
++ "decision": "answer",
++ "location": {
++ "lat": 52.31,
++ "lng": 4.76,
++ "accuracy_m": 1200,
++ "precise": false
++ }
++}
ddiff --git a/fixtures/actor.approval-answer/valid/location-precise.json b/fixtures/actor.approval-answer/valid/location-precise.json
nnew file mode 100644
iindex 00000000..4ebbf32d
---- /dev/null
++++ b/fixtures/actor.approval-answer/valid/location-precise.json
@@@ -0,0 +1,9 @@
++{
++ "decision": "answer",
++ "location": {
++ "lat": 52.367612,
++ "lng": 4.904123,
++ "accuracy_m": 8,
++ "precise": true
++ }
++}
ddiff --git a/fixtures/actor.approval-answer/valid/photo.json b/fixtures/actor.approval-answer/valid/photo.json
nnew file mode 100644
iindex 00000000..e99357ba
---- /dev/null
++++ b/fixtures/actor.approval-answer/valid/photo.json
@@@ -0,0 +1,6 @@
++{
++ "decision": "answer",
++ "photo": {
++ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"
++ }
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 355637a7..95048c0d 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -110942,7 +110942,7 @@
}
},
"actor.skill@1": {
-- "version": "1.0.0",
++ "version": "1.1.0",
"owner": "actor",
"status": "active",
"schema": {
@@@ -111036,7 +111036,7 @@
"properties": {
"kinds": {
"type": "array",
-- "maxItems": 15,
++ "maxItems": 18,
"uniqueItems": true,
"items": {
"type": "string",
@@@ -111055,7 +111055,10 @@
"send",
"install",
"routine",
-- "money"
++ "money",
++ "device.camera",
++ "device.location",
++ "device.notify"
]
},
"description": "The kinds of act (actor approvals, HO1) its steps may be."
@@@ -111138,7 +111141,7 @@
}
},
"actor.skill@2": {
-- "version": "2.0.0",
++ "version": "2.1.0",
"owner": "actor",
"status": "active",
"schema": {
@@@ -111414,7 +111417,7 @@
"properties": {
"kinds": {
"type": "array",
-- "maxItems": 16,
++ "maxItems": 19,
"uniqueItems": true,
"items": {
"type": "string",
@@@ -111434,6 +111437,9 @@
"install",
"routine",
"money",
++ "device.camera",
++ "device.location",
++ "device.notify",
"skill.run"
]
},
@@@ -111719,6 +111725,90 @@
}
}
},
++ "actor.approval-answer": {
++ "version": "1.0.0",
++ "owner": "actor",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/actor/approval-answer.v1.json",
++ "title": "ActorApprovalAnswer",
++ "description": "actor.approval-answer@1: the person's answer to a device approval (plan HO12, the phone as the agent's eyes and hands). The agent asked for the phone's camera or its location, the person did the thing themselves after reading why, and this document carries the result back to the step as untrusted input, never as an instruction. DECISION is \"answer\"; declining an approval stays the ordinary denial and is not this document. Exactly one of PHOTO and LOCATION is present. PHOTO is a private Media object the person took in the system camera (JPEG, PNG or WebP, at most 10 MB, EXIF stripped by Actor): a picture of the world, not a secret, a token or a URL. LOCATION is shared once, after the person allowed it: LAT is -90 to 90, LNG -180 to 180 and ACCURACY_M is 0 to 100000 metres. PRECISE is true only when the step asked for precise and the person allowed it; when it is false the share is coarse and LAT and LNG carry at most two decimals (about a kilometre). JSON Schema cannot count decimal places, so the two-decimal rule lives in the description, is enforced by Actor and is checked by this repository's suite.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "decision"
++ ],
++ "properties": {
++ "decision": {
++ "const": "answer",
++ "description": "The only decision this document carries: the person answered the ask. A decline is the approval's ordinary denial, not a data-carrying answer."
++ },
++ "photo": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "media_id"
++ ],
++ "description": "The photo the person took in the system camera after reading why. It is stored as a private Media object in Actor's tenant, and the step reaches it through a short-lived signed URL; this document carries only the object's id.",
++ "properties": {
++ "media_id": {
++ "type": "string",
++ "pattern": "^med_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The private Media object holding the photo (media.object@1's id: med_<ULID>)."
++ }
++ }
++ },
++ "location": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "lat",
++ "lng",
++ "accuracy_m",
++ "precise"
++ ],
++ "description": "The place the person shared once. When PRECISE is false, LAT and LNG carry at most two decimals (about a kilometre); JSON Schema cannot count decimal places, so Actor enforces the rounding and the repository's suite holds it. A precise location is shared only when the step asked for it and the person allowed it.",
++ "properties": {
++ "lat": {
++ "type": "number",
++ "minimum": -90,
++ "maximum": 90,
++ "description": "Latitude in degrees, -90 to 90."
++ },
++ "lng": {
++ "type": "number",
++ "minimum": -180,
++ "maximum": 180,
++ "description": "Longitude in degrees, -180 to 180."
++ },
++ "accuracy_m": {
++ "type": "number",
++ "minimum": 0,
++ "maximum": 100000,
++ "description": "The device's accuracy radius in metres, 0 to 100000."
++ },
++ "precise": {
++ "type": "boolean",
++ "description": "True only when the step asked for a precise location and the person allowed it; false for a one-time coarse share (LAT and LNG at most two decimals)."
++ }
++ }
++ }
++ },
++ "oneOf": [
++ {
++ "required": [
++ "photo"
++ ]
++ },
++ {
++ "required": [
++ "location"
++ ]
++ }
++ ]
++ }
++ },
"frame.menu-card": {
"version": "1.0.0",
"owner": "network",
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 5e4ae191..e9134972 100644
---- a/generated/openapi/actor.json
++++ b/generated/openapi/actor.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Actor API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/ai.json b/generated/openapi/ai.json
iindex 83b7a1f6..f9f5456b 100644
---- a/generated/openapi/ai.json
++++ b/generated/openapi/ai.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.AI API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bench.json b/generated/openapi/bench.json
iindex 4e07a801..d3c4b83d 100644
---- a/generated/openapi/bench.json
++++ b/generated/openapi/bench.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bench API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/billing.json b/generated/openapi/billing.json
iindex a92ad98e..b8b26219 100644
---- a/generated/openapi/billing.json
++++ b/generated/openapi/billing.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Billing API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/blog.json b/generated/openapi/blog.json
iindex 52d5027a..5331ca0f 100644
---- a/generated/openapi/blog.json
++++ b/generated/openapi/blog.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Blog API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bot.json b/generated/openapi/bot.json
iindex 6aff2440..df8c9207 100644
---- a/generated/openapi/bot.json
++++ b/generated/openapi/bot.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bot API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/chat.json b/generated/openapi/chat.json
iindex 4d0e9c4b..2a8605ab 100644
---- a/generated/openapi/chat.json
++++ b/generated/openapi/chat.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Chat API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/codes.json b/generated/openapi/codes.json
iindex 2e6238a5..b2629d11 100644
---- a/generated/openapi/codes.json
++++ b/generated/openapi/codes.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Codes API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/community.json b/generated/openapi/community.json
iindex 92f60b46..1ce70152 100644
---- a/generated/openapi/community.json
++++ b/generated/openapi/community.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Community API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/connect.json b/generated/openapi/connect.json
iindex d95012ee..dbb64e30 100644
---- a/generated/openapi/connect.json
++++ b/generated/openapi/connect.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe Connect API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/coupons.json b/generated/openapi/coupons.json
iindex abfcdee9..d4510e53 100644
---- a/generated/openapi/coupons.json
++++ b/generated/openapi/coupons.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Coupons API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/deals.json b/generated/openapi/deals.json
iindex 453d77ec..218bb263 100644
---- a/generated/openapi/deals.json
++++ b/generated/openapi/deals.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Deals API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/design.json b/generated/openapi/design.json
iindex 81e61807..9050f108 100644
---- a/generated/openapi/design.json
++++ b/generated/openapi/design.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Design API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/domains.json b/generated/openapi/domains.json
iindex 4e4e1666..bb129385 100644
---- a/generated/openapi/domains.json
++++ b/generated/openapi/domains.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Domains API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/events.json b/generated/openapi/events.json
iindex 419f359b..6e6ffac2 100644
---- a/generated/openapi/events.json
++++ b/generated/openapi/events.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Events API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/food.json b/generated/openapi/food.json
iindex fc85c843..805b090d 100644
---- a/generated/openapi/food.json
++++ b/generated/openapi/food.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Food API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/games.json b/generated/openapi/games.json
iindex e47a0e58..ef1d8ec6 100644
---- a/generated/openapi/games.json
++++ b/generated/openapi/games.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Games API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/host.json b/generated/openapi/host.json
iindex dd466d12..5226057e 100644
---- a/generated/openapi/host.json
++++ b/generated/openapi/host.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Host API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/inventory.json b/generated/openapi/inventory.json
iindex 40342222..f8113ec8 100644
---- a/generated/openapi/inventory.json
++++ b/generated/openapi/inventory.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Inventory API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/live.json b/generated/openapi/live.json
iindex e3be351c..a598c8ec 100644
---- a/generated/openapi/live.json
++++ b/generated/openapi/live.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Live API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/mail.json b/generated/openapi/mail.json
iindex 6958ddd3..1bf4a882 100644
---- a/generated/openapi/mail.json
++++ b/generated/openapi/mail.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Mail API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media-hub.json b/generated/openapi/media-hub.json
iindex 1dcd4a5e..724106c2 100644
---- a/generated/openapi/media-hub.json
++++ b/generated/openapi/media-hub.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.MediaHub API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media.json b/generated/openapi/media.json
iindex b4829bd9..4cc3dc43 100644
---- a/generated/openapi/media.json
++++ b/generated/openapi/media.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Media API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/network.json b/generated/openapi/network.json
iindex 71f65c2b..4116fac0 100644
---- a/generated/openapi/network.json
++++ b/generated/openapi/network.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Network API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/news.json b/generated/openapi/news.json
iindex 8a154cd6..f17b58c6 100644
---- a/generated/openapi/news.json
++++ b/generated/openapi/news.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.News API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/openre.json b/generated/openapi/openre.json
iindex 420866a2..fac90716 100644
---- a/generated/openapi/openre.json
++++ b/generated/openapi/openre.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenRestream API",
-- "version": "0.344.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/play.json b/generated/openapi/play.json
iindex e819d0b6..0109fd40 100644
---- a/generated/openapi/play.json
++++ b/generated/openapi/play.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Play API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/quest.json b/generated/openapi/quest.json
iindex 0c91f996..cf4076c1 100644
---- a/generated/openapi/quest.json
++++ b/generated/openapi/quest.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Quest API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/report.json b/generated/openapi/report.json
iindex da797783..3edb1d5e 100644
---- a/generated/openapi/report.json
++++ b/generated/openapi/report.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Report API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/reviews.json b/generated/openapi/reviews.json
iindex 9994cb9d..b4333a04 100644
---- a/generated/openapi/reviews.json
++++ b/generated/openapi/reviews.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Reviews API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/run.json b/generated/openapi/run.json
iindex 6320f23b..7a007d75 100644
---- a/generated/openapi/run.json
++++ b/generated/openapi/run.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Run API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/search.json b/generated/openapi/search.json
iindex 14a6d11f..ea7159eb 100644
---- a/generated/openapi/search.json
++++ b/generated/openapi/search.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Search API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/services.json b/generated/openapi/services.json
iindex af94de51..8e6507d0 100644
---- a/generated/openapi/services.json
++++ b/generated/openapi/services.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Services API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/sources.json b/generated/openapi/sources.json
iindex e6be5b0e..1acdcde7 100644
---- a/generated/openapi/sources.json
++++ b/generated/openapi/sources.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Sources API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/space.json b/generated/openapi/space.json
iindex 15096ad9..c3b4094e 100644
---- a/generated/openapi/space.json
++++ b/generated/openapi/space.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Space API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tips.json b/generated/openapi/tips.json
iindex 447656cb..2c48dd35 100644
---- a/generated/openapi/tips.json
++++ b/generated/openapi/tips.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tips API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/today.json b/generated/openapi/today.json
iindex 792319b2..5938bee7 100644
---- a/generated/openapi/today.json
++++ b/generated/openapi/today.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Today API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tools.json b/generated/openapi/tools.json
iindex 8487bf57..979b83f0 100644
---- a/generated/openapi/tools.json
++++ b/generated/openapi/tools.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tools API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/trade.json b/generated/openapi/trade.json
iindex c2cc2cd1..e31a1b9c 100644
---- a/generated/openapi/trade.json
++++ b/generated/openapi/trade.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Trade API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vip.json b/generated/openapi/vip.json
iindex 75b458b3..767b2889 100644
---- a/generated/openapi/vip.json
++++ b/generated/openapi/vip.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.VIP API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vision.json b/generated/openapi/vision.json
iindex 6d3fd886..62188e5f 100644
---- a/generated/openapi/vision.json
++++ b/generated/openapi/vision.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Vision API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/watch.json b/generated/openapi/watch.json
iindex 612b5fad..a9e88e70 100644
---- a/generated/openapi/watch.json
++++ b/generated/openapi/watch.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Watch API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/wiki.json b/generated/openapi/wiki.json
iindex 2778a77c..99d5c3f4 100644
---- a/generated/openapi/wiki.json
++++ b/generated/openapi/wiki.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Wiki API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/work.json b/generated/openapi/work.json
iindex 2870168c..dd8b8954 100644
---- a/generated/openapi/work.json
++++ b/generated/openapi/work.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Work API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/zone.json b/generated/openapi/zone.json
iindex 72cad0d0..00d0f943 100644
---- a/generated/openapi/zone.json
++++ b/generated/openapi/zone.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Zone API",
-- "version": "0.344.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.344.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.345.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.345.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/typescript/index.d.ts b/generated/typescript/index.d.ts
iindex dad8198d..a163eeb9 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -302815,7 +302815,7 @@ export interface ActorCanvas {
)[];
}
--/** [email protected] (owner: actor) */
++/** [email protected] (owner: actor) */
/**
* actor.skill@1: a skill, the document an agent loads to do one kind of job well (ADR-058). It follows the open Markdown-skill shape (a name, a one-line description, Markdown instructions) with what OpenVibe adds: a slug, a version, up to ten TEXT resources, and REQUIRES, what the skill may ask an agent to do. A skill GRANTS NOTHING: requires only declares; the agent's level and approvals decide every step (actor approvals, HO1), and a step of a kind the skill did not declare is a scan finding (actor.skill-listing@1). A v1 skill RUNS AS A PROMPT and nothing else: no code, no binary, no install recipe (a skill that runs code waits for a sandbox and a new major). DESCRIPTION is the only part an agent reads before it loads the skill (progressive disclosure), so it says when to use it. The INTEGRITY block is a sha256 over the canonical JSON of the document: it shows the file was not edited after it was written and says nothing about who wrote it, so the AUTHOR is a claim; the registry's listing is the only place a publisher is vouched for. The canonical JSON is the document's own fields, in this order: skill, slug, name, description, version, instructions, resources, requires, runs, license, author; an optional field that is absent or empty is left out; resources are [{ path, media_type, text }] in the document's order; requires is { kinds, apps, hosts } with empty lists left out; author is { subject } or { subject, name }; the value is the compact JSON of that object (no spaces). CREATED_AT is not hashed.
*/
@@@ -303318,7 +303318,7 @@ export interface ActorSkill {
/**
* The kinds of act (actor approvals, HO1) its steps may be.
*
-- * @maxItems 15
++ * @maxItems 18
*/
kinds?:
| []
@@@ -303338,6 +303338,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
]
| [
(
@@@ -303356,6 +303359,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303373,6 +303379,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303392,6 +303401,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303409,6 +303421,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303426,6 +303441,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303445,6 +303463,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303462,6 +303483,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303479,6 +303503,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303496,6 +303523,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303515,6 +303545,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303532,6 +303565,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303549,6 +303585,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303566,6 +303605,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303583,6 +303625,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303602,6 +303647,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303619,6 +303667,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303636,6 +303687,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303653,6 +303707,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303670,6 +303727,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303687,6 +303747,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303706,6 +303769,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303723,6 +303789,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303740,6 +303809,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303757,6 +303829,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303774,6 +303849,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303791,6 +303869,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303808,6 +303889,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303827,6 +303911,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303844,6 +303931,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303861,6 +303951,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303878,6 +303971,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303895,6 +303991,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303912,6 +304011,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303929,6 +304031,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303946,6 +304051,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -303965,6 +304073,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303982,6 +304093,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -303999,6 +304113,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304016,6 +304133,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304033,6 +304153,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304050,6 +304173,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304067,6 +304193,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304084,6 +304213,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304101,6 +304233,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -304120,6 +304255,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304137,6 +304275,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304154,6 +304295,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304171,6 +304315,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304188,6 +304335,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304205,6 +304355,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304222,6 +304375,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304239,6 +304395,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304256,6 +304415,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304273,6 +304435,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -304292,6 +304457,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304309,6 +304477,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304326,6 +304497,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304343,6 +304517,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304360,6 +304537,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304377,6 +304557,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304394,6 +304577,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304411,6 +304597,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304428,6 +304617,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304445,6 +304637,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304462,6 +304657,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -304481,6 +304679,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304498,6 +304699,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304515,6 +304719,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304532,6 +304739,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304549,6 +304759,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304566,6 +304779,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304583,6 +304799,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304600,6 +304819,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304617,6 +304839,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304634,6 +304859,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304651,6 +304879,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304668,6 +304899,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -304687,6 +304921,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304704,6 +304941,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304721,6 +304961,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304738,6 +304981,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304755,6 +305001,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304772,6 +305021,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304789,6 +305041,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304806,6 +305061,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304823,6 +305081,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304840,6 +305101,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304857,6 +305121,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304874,6 +305141,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304891,6 +305161,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -304910,6 +305183,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304927,6 +305203,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304944,6 +305223,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304961,6 +305243,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304978,6 +305263,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -304995,6 +305283,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305012,6 +305303,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305029,6 +305323,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305046,6 +305343,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305063,6 +305363,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305080,6 +305383,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305097,6 +305403,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305114,6 +305423,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305131,6 +305443,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
]
| [
@@@ -305150,6 +305465,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305167,6 +305485,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305184,6 +305505,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305201,6 +305525,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305218,6 +305545,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305235,6 +305565,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305252,6 +305585,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305269,6 +305605,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305286,6 +305625,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305303,6 +305645,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305320,6 +305665,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305337,6 +305685,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305354,6 +305705,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305371,6 +305725,9 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
),
(
| "codes.task"
@@@ -305388,263 +305745,1294 @@ export interface ActorSkill {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
)
-- ];
-- /**
-- * Connected apps it uses (connect slugs). The person connects each one themselves.
-- *
-- * @maxItems 20
-- */
-- apps?:
-- | []
-- | [string]
-- | [string, string]
-- | [string, string, string]
-- | [string, string, string, string]
-- | [string, string, string, string, string]
-- | [string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string, string, string, string]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ];
-- /**
-- * Web hosts it reads from or writes to.
-- *
-- * @maxItems 20
-- */
-- hosts?:
-- | []
-- | [string]
-- | [string, string]
-- | [string, string, string]
-- | [string, string, string, string]
-- | [string, string, string, string, string]
-- | [string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string, string, string]
-- | [string, string, string, string, string, string, string, string, string, string, string, string, string, string]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
-- ]
-- | [
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string,
-- string
]
| [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ )
++ ];
++ /**
++ * Connected apps it uses (connect slugs). The person connects each one themselves.
++ *
++ * @maxItems 20
++ */
++ apps?:
++ | []
++ | [string]
++ | [string, string]
++ | [string, string, string]
++ | [string, string, string, string]
++ | [string, string, string, string, string]
++ | [string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string, string, string]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ];
++ /**
++ * Web hosts it reads from or writes to.
++ *
++ * @maxItems 20
++ */
++ hosts?:
++ | []
++ | [string]
++ | [string, string]
++ | [string, string, string]
++ | [string, string, string, string]
++ | [string, string, string, string, string]
++ | [string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string, string, string]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
string,
string,
string,
@@@ -305662,8 +307050,6 @@ export interface ActorSkill {
string,
string,
string,
-- string,
-- string,
string
];
};
@@@ -305695,7 +307081,7 @@ export interface ActorSkill {
};
}
--/** [email protected] (owner: actor) */
++/** [email protected] (owner: actor) */
/**
* actor.skill@2: a skill, the document an agent loads to do one kind of job well (ADR-058, ADR-060). It keeps every field and meaning of actor.skill@1 and adds a way for the skill to bring CODE that runs in a sandbox: RUNS is prompt (as @1, text and instructions only) or sandbox. A sandbox skill carries its code as ordinary TEXT resources (a .js path with media_type text/javascript, at most 64 KiB each, in the integrity hash); TOOLS (1 to 5, only when runs is sandbox) say what an agent may call: a name, a description the agent reads, language javascript (the only one in v1), an ENTRY naming one of the skill's own .js resources, ARGS as a JSON Schema subset (an object whose properties are string, number, integer, boolean or an array of those; enum, maxLength, and pattern at most 200 characters; no $ref and no nested object), NET (deny by default, openvibe-only, public) and LIMITS (wall_ms at most 30000, default 10000; mem_bytes at most 268435456, default 134217728). A sandbox skill's requires.kinds names skill.run; a prompt skill declares no tools. A skill GRANTS NOTHING: requires only declares; the agent's level and approvals decide every step (actor approvals, HO1), and a step of a kind the skill did not declare is a scan finding (actor.skill-listing@2). Code never runs on an OpenVibe server and never sees a secret: it runs as a Run job of class function on a Node that declared the skill runner, with the network its tool declared and the exact bytes the registry scanned. The INTEGRITY block is a sha256 over the canonical JSON of the document: it shows the file was not edited after it was written and says nothing about who wrote it, so the AUTHOR is a claim; the registry's listing is the only place a publisher is vouched for. The canonical JSON is the document's own fields, in this order: skill, slug, name, description, version, instructions, resources, tools, requires, runs, license, author; an optional field that is absent or empty is left out; resources are [{ path, media_type, text }] in the document's order; tools are [{ name, description, language, entry, args, net, limits }] in the document's order, with an absent net or limits (and each absent limits field) left out and args as the object the document wrote; requires is { kinds, apps, hosts } with empty lists left out; author is { subject } or { subject, name }; the value is the compact JSON of that object (no spaces). CREATED_AT is not hashed.
*/
@@@ -309537,27 +310923,970 @@ export type ActorSkillV2 = {
/**
* The kinds of act (actor approvals, HO1) its steps may be.
*
-- * @maxItems 16
++ * @maxItems 19
*/
kinds?:
| []
| [
-- | "codes.task"
-- | "actor.action"
-- | "computer.run"
-- | "computer.write"
-- | "computer.input"
-- | "computer.browser"
-- | "computer.desk"
-- | "robot.move"
-- | "space"
-- | "publish"
-- | "post"
-- | "send"
-- | "install"
-- | "routine"
-- | "money"
-- | "skill.run"
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
]
| [
(
@@@ -309576,6 +311905,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309594,10 +311926,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -309614,6 +311947,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309632,6 +311968,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309650,10 +311989,32 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
(
| "codes.task"
| "actor.action"
@@@ -309670,6 +312031,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309688,6 +312052,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309706,6 +312073,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309724,6 +312094,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
)
]
@@@ -309744,6 +312117,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309762,6 +312138,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309780,6 +312159,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309798,6 +312180,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309816,10 +312201,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -309836,6 +312222,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309854,6 +312243,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309872,6 +312264,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309890,6 +312285,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309908,6 +312306,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309926,6 +312327,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
)
]
@@@ -309946,6 +312350,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309964,6 +312371,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -309982,6 +312392,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310000,6 +312413,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310018,6 +312434,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310036,6 +312455,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310054,10 +312476,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -310074,6 +312497,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310092,6 +312518,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310110,6 +312539,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310128,6 +312560,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310146,6 +312581,32 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310164,6 +312625,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310182,6 +312646,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310200,10 +312667,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -310220,6 +312688,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310238,6 +312709,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310256,6 +312730,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310274,6 +312751,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310292,6 +312772,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310310,6 +312793,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310328,6 +312814,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310346,6 +312835,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310364,6 +312856,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
)
]
@@@ -310384,6 +312879,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310402,6 +312900,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310420,6 +312921,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310438,6 +312942,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310456,6 +312963,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310474,6 +312984,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310492,6 +313005,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310510,6 +313026,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310528,6 +313047,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310546,10 +313068,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -310566,6 +313089,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310584,6 +313110,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310602,6 +313131,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310620,8 +313152,13 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- ),
++ )
++ ]
++ | [
(
| "codes.task"
| "actor.action"
@@@ -310638,6 +313175,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310656,6 +313196,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310674,6 +313217,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310692,6 +313238,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310710,6 +313259,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310728,6 +313280,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310746,10 +313301,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -310766,6 +313322,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310784,6 +313343,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310802,6 +313364,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310820,6 +313385,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310838,6 +313406,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310856,6 +313427,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310874,6 +313448,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310892,6 +313469,32 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310910,6 +313513,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310928,6 +313534,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310946,6 +313555,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -310964,10 +313576,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -310984,6 +313597,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311002,6 +313618,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311020,6 +313639,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311038,6 +313660,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311056,6 +313681,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311074,6 +313702,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311092,6 +313723,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311110,6 +313744,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311128,6 +313765,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311146,6 +313786,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311164,6 +313807,32 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ )
++ ]
++ | [
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311182,6 +313851,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311200,10 +313872,11 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
-- )
-- ]
-- | [
++ ),
(
| "codes.task"
| "actor.action"
@@@ -311220,6 +313893,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311238,6 +313914,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311256,6 +313935,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311274,6 +313956,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311292,6 +313977,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311310,6 +313998,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311328,6 +314019,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311346,6 +314040,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311364,6 +314061,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311382,6 +314082,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311400,6 +314103,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311418,6 +314124,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311436,6 +314145,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311454,6 +314166,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
)
]
@@@ -311474,6 +314189,72 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311492,6 +314273,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311510,6 +314294,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311528,6 +314315,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311546,6 +314336,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311564,6 +314357,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311582,6 +314378,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311600,6 +314399,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311618,6 +314420,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311636,6 +314441,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311654,6 +314462,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311672,6 +314483,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311690,6 +314504,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311708,6 +314525,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311726,6 +314546,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
)
]
@@@ -311746,6 +314569,72 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
++ | "skill.run"
++ ),
++ (
++ | "codes.task"
++ | "actor.action"
++ | "computer.run"
++ | "computer.write"
++ | "computer.input"
++ | "computer.browser"
++ | "computer.desk"
++ | "robot.move"
++ | "space"
++ | "publish"
++ | "post"
++ | "send"
++ | "install"
++ | "routine"
++ | "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311764,6 +314653,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311782,6 +314674,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311800,6 +314695,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311818,6 +314716,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311836,6 +314737,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311854,6 +314758,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311872,6 +314779,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311890,6 +314800,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311908,6 +314821,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311926,6 +314842,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311944,6 +314863,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311962,6 +314884,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311980,6 +314905,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -311998,6 +314926,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
),
(
@@@ -312016,6 +314947,9 @@ export type ActorSkillV2 = {
| "install"
| "routine"
| "money"
++ | "device.camera"
++ | "device.location"
++ | "device.notify"
| "skill.run"
)
];
@@@ -312324,6 +315258,49 @@ export type ActorSkillV2 = {
};
};
++/** [email protected] (owner: actor) */
++/**
++ * actor.approval-answer@1: the person's answer to a device approval (plan HO12, the phone as the agent's eyes and hands). The agent asked for the phone's camera or its location, the person did the thing themselves after reading why, and this document carries the result back to the step as untrusted input, never as an instruction. DECISION is "answer"; declining an approval stays the ordinary denial and is not this document. Exactly one of PHOTO and LOCATION is present. PHOTO is a private Media object the person took in the system camera (JPEG, PNG or WebP, at most 10 MB, EXIF stripped by Actor): a picture of the world, not a secret, a token or a URL. LOCATION is shared once, after the person allowed it: LAT is -90 to 90, LNG -180 to 180 and ACCURACY_M is 0 to 100000 metres. PRECISE is true only when the step asked for precise and the person allowed it; when it is false the share is coarse and LAT and LNG carry at most two decimals (about a kilometre). JSON Schema cannot count decimal places, so the two-decimal rule lives in the description, is enforced by Actor and is checked by this repository's suite.
++ */
++export type ActorApprovalAnswer = {
++ /**
++ * The only decision this document carries: the person answered the ask. A decline is the approval's ordinary denial, not a data-carrying answer.
++ */
++ decision: "answer";
++ /**
++ * The photo the person took in the system camera after reading why. It is stored as a private Media object in Actor's tenant, and the step reaches it through a short-lived signed URL; this document carries only the object's id.
++ */
++ photo?: {
++ /**
++ * The private Media object holding the photo (media.object@1's id: med_<ULID>).
++ */
++ media_id: string;
++ };
++ /**
++ * The place the person shared once. When PRECISE is false, LAT and LNG carry at most two decimals (about a kilometre); JSON Schema cannot count decimal places, so Actor enforces the rounding and the repository's suite holds it. A precise location is shared only when the step asked for it and the person allowed it.
++ */
++ location?: {
++ /**
++ * Latitude in degrees, -90 to 90.
++ */
++ lat: number;
++ /**
++ * Longitude in degrees, -180 to 180.
++ */
++ lng: number;
++ /**
++ * The device's accuracy radius in metres, 0 to 100000.
++ */
++ accuracy_m: number;
++ /**
++ * True only when the step asked for a precise location and the person allowed it; false for a one-time coarse share (LAT and LNG at most two decimals).
++ */
++ precise: boolean;
++ };
++} & {
++ [k: string]: unknown | undefined;
++};
++
/** [email protected] (owner: network) */
/**
* frame.menu-card@1: one card a site publishes for the network's Frame menu. Each open site serves an array of at most three cards at /.well-known/openvibe-menu.json (frame.menu-cards@1); Network fetches that public file every five minutes, validates every card here, strips markup from the text and ranks the cards in GET /api/frame. A card is one kind of menu block: a rail (the live rail), rows (a ranked list) or chips (a short row of words). Every item links to https on the site's own origin or an openvibe.* host; Network refuses another origin. An item may also carry a small picture (image) of the same shape: https on the site's own origin or an openvibe.* host, with an optional 16–1920 pixel width and height and a short alt text. The text is plain words: markup is stripped, unknown fields are dropped and a file that fails this schema leaves the site's last good card in place for 30 minutes.
ddiff --git a/package-lock.json b/package-lock.json
iindex 896ec2f9..c9d6cae5 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.344.0",
++ "version": "0.345.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.344.0",
++ "version": "0.345.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 99692e6a..dc785b32 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.344.0",
++ "version": "0.345.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",
ddiff --git a/test/run.js b/test/run.js
iindex 6686c77d..83957ba4 100644
---- a/test/run.js
++++ b/test/run.js
@@@ -84,6 +84,20 @@ const FULL_CHECK = {
? { valid: false, errors: missing.map((t) => ({ path: '/tools', message: `entry ${t.entry} names no resource` })) }
: r;
},
++ // A coarse device answer carries at most two decimals of lat and lng (HO12). JSON Schema cannot count
++ // decimal places, so the description says it, Actor rounds the share and this suite holds the fixtures to it.
++ 'actor.approval-answer': (v, ref) => {
++ const r = contracts.validate(ref, v);
++ if (!r.valid || !v.location || v.location.precise !== false) return r;
++ const places = (x) => {
++ const s = String(x);
++ return /[eE]/.test(s) ? 99 : (s.split('.')[1] || '').length;
++ };
++ const coarse = ['lat', 'lng'].filter((k) => places(v.location[k]) > 2);
++ return coarse.length
++ ? { valid: false, errors: coarse.map((k) => ({ path: `/location/${k}`, message: 'a coarse location carries at most two decimals' })) }
++ : r;
++ },
};
/** The ref a fixture names itself (`skill: actor.skill@2`) or the bare id (newest major) when it names none. */
const majorRef = (id, value) => {
@@@ -1137,7 +1151,7 @@ sub(path.join(__dirname, 'changelog-history.test.js'));
ok(!skill.required.includes('author'), 'the author is a claim: a skill may name nobody');
ok(!/signature|signed/i.test(skill.description.replace(/not a signature/gi, '')), 'actor.skill@1 does not call the hash a signature');
const HO1 = ['codes.task', 'actor.action', 'computer.run', 'computer.write', 'computer.input', 'computer.browser', 'computer.desk',
-- 'robot.move', 'space', 'publish', 'post', 'send', 'install', 'routine', 'money'];
++ 'robot.move', 'space', 'publish', 'post', 'send', 'install', 'routine', 'money', 'device.camera', 'device.location', 'device.notify'];
ok(JSON.stringify(skill.properties.requires.properties.kinds.items.enum) === JSON.stringify(HO1), 'requires.kinds is exactly the approval kinds (HO1)');
const types = skill.properties.resources.items.properties.media_type.enum;
ok(types.every((t) => /^text\/|^application\/json$/.test(t)), 'a resource is text, never a binary or a script');
@@@ -1186,6 +1200,46 @@ sub(path.join(__dirname, 'changelog-history.test.js'));
ok(pinned.skill.tools.every((t) => pinned.code.some((c) => c.name === t.entry)), 'every tool of a sandbox listing has a code object');
}
++// ── actor.approval-answer@1 (HO12): the person's answer to a device ask ─────
++// The agent asks for the phone's camera or its location; the person does the thing themselves and the answer
++// carries the result. Exactly one of photo or location. A coarse location carries at most two decimals of lat
++// and lng, which JSON Schema cannot count: the description says it, Actor rounds it and this block holds it.
++{
++ const ref = 'actor.approval-answer@1';
++ const s = contracts.schema(ref);
++ ok(s.properties.decision.const === 'answer', 'a device answer is the "answer" decision; a decline is the ordinary denial');
++ const photo = s.properties.photo;
++ ok(photo.properties.media_id.pattern === contracts.schema('media.object@1').properties.id.pattern, 'photo.media_id is a Media object id (med_<ULID>)');
++ const loc = s.properties.location;
++ ok(JSON.stringify(loc.required) === JSON.stringify(['lat', 'lng', 'accuracy_m', 'precise']), 'a location always says where, how accurate and whether it is precise');
++ ok(loc.properties.lat.minimum === -90 && loc.properties.lat.maximum === 90 && loc.properties.lng.minimum === -180 && loc.properties.lng.maximum === 180, 'lat and lng are real coordinates');
++ ok(loc.properties.accuracy_m.minimum === 0 && loc.properties.accuracy_m.maximum === 100000, 'accuracy_m is 0 to 100000 metres');
++ ok(/at most two decimals/.test(loc.description) && /cannot count/.test(loc.description), 'the schema says a coarse location carries at most two decimals and that JSON Schema cannot count them');
++ const names = [];
++ (function walk(node) {
++ if (!node || typeof node !== 'object') return;
++ for (const [k, v] of Object.entries(node.properties || {})) { names.push(k); walk(v); }
++ })(s);
++ ok(!names.some((k) => /^(secret|token|url)$/i.test(k)), 'an answer has no secret, token or url field');
++ const dir = path.join(ROOT, 'fixtures', 'actor.approval-answer');
++ const read = (kind, f) => JSON.parse(fs.readFileSync(path.join(dir, kind, f), 'utf8'));
++ const photoOnly = read('valid', 'photo.json');
++ const coarse = read('valid', 'location-coarse.json');
++ const precise = read('valid', 'location-precise.json');
++ ok(contracts.validate(ref, photoOnly).valid && contracts.validate(ref, coarse).valid && contracts.validate(ref, precise).valid, 'a photo, a coarse location and a precise location are each a valid answer');
++ ok(!contracts.validate(ref, { decision: 'answer' }).valid, 'an answer with neither photo nor location is refused');
++ ok(!contracts.validate(ref, { ...photoOnly, location: coarse.location }).valid, 'an answer with both photo and location is refused');
++ ok(!contracts.validate(ref, { ...photoOnly, note: 'extra' }).valid, 'an extra field is refused');
++ ok(!contracts.validate(ref, { decision: 'answer', photo: { media_id: 'file_123' } }).valid, 'a photo is a Media object, not an arbitrary id');
++ ok(!contracts.validate(ref, { ...coarse, location: { ...coarse.location, lng: -181 } }).valid, 'lng -181 is not a coordinate');
++ ok(!contracts.validate(ref, { ...coarse, location: { ...coarse.location, accuracy_m: 100001 } }).valid, 'an accuracy over 100 km is refused');
++ const four = read('invalid', 'coarse-four-decimals.json');
++ ok(contracts.validate(ref, four).valid, 'JSON Schema alone accepts a coarse location with four decimals: the two-decimal rule lives in the description, Actor and this block');
++ const refused = FULL_CHECK['actor.approval-answer'](four, ref);
++ ok(!refused.valid && refused.errors.some((e) => /two decimals/.test(e.message)), 'the suite refuses a coarse location with four decimals');
++ ok(FULL_CHECK['actor.approval-answer']({ ...four, location: { ...four.location, precise: true } }, ref).valid, 'a precise location may carry more than two decimals');
++}
++
// ── actor.voice@1: the integrity hash ─────────────────────────────────────
// The integrity block is a sha256 over the canonical JSON of the document (the contract's description
// says which fields it holds and in which order). It shows the file was not edited after it was