openvibers/openvibe.contracts Commits
0.345.0: actor.approval-answer@1 and the device approval kinds (HO12) (#353)
Changes
@@@ -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 personnnew file mode 100644@@@ -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"++ ]++ }++ ]++}@@@ -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."@@@ -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"]},@@@ -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",nnew file mode 100644@@@ -0,0 +1,9 @@++{++ "decision": "answer",++ "location": {++ "lat": 52.3676,++ "lng": 4.9041,++ "accuracy_m": 1200,++ "precise": false++ }++}nnew file mode 100644@@@ -0,0 +1,7 @@++{++ "decision": "answer",++ "photo": {++ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"++ },++ "note": "an extra field is never part of an answer"++}nnew file mode 100644@@@ -0,0 +1,9 @@++{++ "decision": "answer",++ "location": {++ "lat": 91,++ "lng": 4.76,++ "accuracy_m": 8,++ "precise": true++ }++}nnew file mode 100644@@@ -0,0 +1,12 @@++{++ "decision": "answer",++ "photo": {++ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"++ },++ "location": {++ "lat": 52.31,++ "lng": 4.76,++ "accuracy_m": 1200,++ "precise": false++ }++}nnew file mode 100644@@@ -0,0 +1,9 @@++{++ "decision": "answer",++ "location": {++ "lat": 52.31,++ "lng": 4.76,++ "accuracy_m": 1200,++ "precise": false++ }++}nnew file mode 100644@@@ -0,0 +1,9 @@++{++ "decision": "answer",++ "location": {++ "lat": 52.367612,++ "lng": 4.904123,++ "accuracy_m": 8,++ "precise": true++ }++}nnew file mode 100644@@@ -0,0 +1,6 @@++{++ "decision": "answer",++ "photo": {++ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"++ }++}@@@ -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",@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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.@@@ -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",@@@ -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",@@@ -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
@@ -1,5 +1,20 @@
@@ -1,5 +1,20 @@
# Changelog
# 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
## 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
- `actor.trigger@1` (1.2.0) gains the mention kind (plan HO13, standing intents): a trigger that waits for the person
new file mode 100644
new file mode 100644
@@ -0,0 +1,79 @@
@@ -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"
+ ]
+ }
+ ]
+}
@@ -89,7 +89,7 @@
@@ -89,7 +89,7 @@
"properties": {
"properties": {
"kinds": {
"kinds": {
"type": "array",
"type": "array",
- "maxItems": 15,
+ "maxItems": 18,
"uniqueItems": true,
"uniqueItems": true,
"items": {
"items": {
"type": "string",
"type": "string",
@@ -108,7 +108,10 @@
@@ -108,7 +108,10 @@
"send",
"send",
"install",
"install",
"routine",
"routine",
- "money"
+ "money",
+ "device.camera",
+ "device.location",
+ "device.notify"
]
]
},
},
"description": "The kinds of act (actor approvals, HO1) its steps may be."
"description": "The kinds of act (actor approvals, HO1) its steps may be."
@@ -271,7 +271,7 @@
@@ -271,7 +271,7 @@
"properties": {
"properties": {
"kinds": {
"kinds": {
"type": "array",
"type": "array",
- "maxItems": 16,
+ "maxItems": 19,
"uniqueItems": true,
"uniqueItems": true,
"items": {
"items": {
"type": "string",
"type": "string",
@@ -291,6 +291,9 @@
@@ -291,6 +291,9 @@
"install",
"install",
"routine",
"routine",
"money",
"money",
+ "device.camera",
+ "device.location",
+ "device.notify",
"skill.run"
"skill.run"
]
]
},
},
@@ -10001,7 +10001,7 @@
@@ -10001,7 +10001,7 @@
},
},
{
{
"id": "actor.skill",
"id": "actor.skill",
- "version": "1.0.0",
+ "version": "1.1.0",
"owner": "actor",
"owner": "actor",
"schema": "actor/skill.v1.json",
"schema": "actor/skill.v1.json",
"visibility": "public",
"visibility": "public",
@@ -10011,7 +10011,7 @@
@@ -10011,7 +10011,7 @@
},
},
{
{
"id": "actor.skill",
"id": "actor.skill",
- "version": "2.0.0",
+ "version": "2.1.0",
"owner": "actor",
"owner": "actor",
"schema": "actor/skill.v2.json",
"schema": "actor/skill.v2.json",
"visibility": "public",
"visibility": "public",
@@ -10019,6 +10019,15 @@
@@ -10019,6 +10019,15 @@
"status": "active",
"status": "active",
"adr": "ADR-060"
"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",
"id": "frame.menu-card",
"version": "1.0.0",
"version": "1.0.0",
new file mode 100644
new file mode 100644
@@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
+{
+ "decision": "answer",
+ "location": {
+ "lat": 52.3676,
+ "lng": 4.9041,
+ "accuracy_m": 1200,
+ "precise": false
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
+{
+ "decision": "answer",
+ "photo": {
+ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"
+ },
+ "note": "an extra field is never part of an answer"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
+{
+ "decision": "answer",
+ "location": {
+ "lat": 91,
+ "lng": 4.76,
+ "accuracy_m": 8,
+ "precise": true
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
+{
+ "decision": "answer",
+ "photo": {
+ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"
+ },
+ "location": {
+ "lat": 52.31,
+ "lng": 4.76,
+ "accuracy_m": 1200,
+ "precise": false
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
+{
+ "decision": "answer",
+ "location": {
+ "lat": 52.31,
+ "lng": 4.76,
+ "accuracy_m": 1200,
+ "precise": false
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
+{
+ "decision": "answer",
+ "location": {
+ "lat": 52.367612,
+ "lng": 4.904123,
+ "accuracy_m": 8,
+ "precise": true
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
+{
+ "decision": "answer",
+ "photo": {
+ "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPQ"
+ }
+}
@@ -110942,7 +110942,7 @@
@@ -110942,7 +110942,7 @@
}
}
},
},
"actor.skill@1": {
"actor.skill@1": {
- "version": "1.0.0",
+ "version": "1.1.0",
"owner": "actor",
"owner": "actor",
"status": "active",
"status": "active",
"schema": {
"schema": {
@@ -111036,7 +111036,7 @@
@@ -111036,7 +111036,7 @@
"properties": {
"properties": {
"kinds": {
"kinds": {
"type": "array",
"type": "array",
- "maxItems": 15,
+ "maxItems": 18,
"uniqueItems": true,
"uniqueItems": true,
"items": {
"items": {
"type": "string",
"type": "string",
@@ -111055,7 +111055,10 @@
@@ -111055,7 +111055,10 @@
"send",
"send",
"install",
"install",
"routine",
"routine",
- "money"
+ "money",
+ "device.camera",
+ "device.location",
+ "device.notify"
]
]
},
},
"description": "The kinds of act (actor approvals, HO1) its steps may be."
"description": "The kinds of act (actor approvals, HO1) its steps may be."
@@ -111138,7 +111141,7 @@
@@ -111138,7 +111141,7 @@
}
}
},
},
"actor.skill@2": {
"actor.skill@2": {
- "version": "2.0.0",
+ "version": "2.1.0",
"owner": "actor",
"owner": "actor",
"status": "active",
"status": "active",
"schema": {
"schema": {
@@ -111414,7 +111417,7 @@
@@ -111414,7 +111417,7 @@
"properties": {
"properties": {
"kinds": {
"kinds": {
"type": "array",
"type": "array",
- "maxItems": 16,
+ "maxItems": 19,
"uniqueItems": true,
"uniqueItems": true,
"items": {
"items": {
"type": "string",
"type": "string",
@@ -111434,6 +111437,9 @@
@@ -111434,6 +111437,9 @@
"install",
"install",
"routine",
"routine",
"money",
"money",
+ "device.camera",
+ "device.location",
+ "device.notify",
"skill.run"
"skill.run"
]
]
},
},
@@ -111719,6 +111725,90 @@
@@ -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": {
"frame.menu-card": {
"version": "1.0.0",
"version": "1.0.0",
"owner": "network",
"owner": "network",
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Actor API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.AI API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bench API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Billing API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Blog API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bot API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Chat API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Codes API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Community API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe Connect API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Coupons API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Deals API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Design API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Domains API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Events API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Food API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Games API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Host API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Inventory API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Live API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Mail API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.MediaHub API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Media API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Network API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.News API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenRestream API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Play API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Quest API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Report API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Reviews API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Run API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Search API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Services API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Sources API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Space API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tips API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Today API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tools API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Trade API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.VIP API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Vision API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Watch API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Wiki API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Work API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Zone API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -302815,7 +302815,7 @@ export interface ActorCanvas {
@@ -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.
* 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 {
@@ -303318,7 +303318,7 @@ export interface ActorSkill {
/**
/**
* The kinds of act (actor approvals, HO1) its steps may be.
* The kinds of act (actor approvals, HO1) its steps may be.
*
*
- * @maxItems 15
+ * @maxItems 18
*/
*/
kinds?:
kinds?:
| []
| []
@@ -303338,6 +303338,9 @@ export interface ActorSkill {
@@ -303338,6 +303338,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
]
]
| [
| [
(
(
@@ -303356,6 +303359,9 @@ export interface ActorSkill {
@@ -303356,6 +303359,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303373,6 +303379,9 @@ export interface ActorSkill {
@@ -303373,6 +303379,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303392,6 +303401,9 @@ export interface ActorSkill {
@@ -303392,6 +303401,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303409,6 +303421,9 @@ export interface ActorSkill {
@@ -303409,6 +303421,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303426,6 +303441,9 @@ export interface ActorSkill {
@@ -303426,6 +303441,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303445,6 +303463,9 @@ export interface ActorSkill {
@@ -303445,6 +303463,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303462,6 +303483,9 @@ export interface ActorSkill {
@@ -303462,6 +303483,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303479,6 +303503,9 @@ export interface ActorSkill {
@@ -303479,6 +303503,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303496,6 +303523,9 @@ export interface ActorSkill {
@@ -303496,6 +303523,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303515,6 +303545,9 @@ export interface ActorSkill {
@@ -303515,6 +303545,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303532,6 +303565,9 @@ export interface ActorSkill {
@@ -303532,6 +303565,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303549,6 +303585,9 @@ export interface ActorSkill {
@@ -303549,6 +303585,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303566,6 +303605,9 @@ export interface ActorSkill {
@@ -303566,6 +303605,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303583,6 +303625,9 @@ export interface ActorSkill {
@@ -303583,6 +303625,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303602,6 +303647,9 @@ export interface ActorSkill {
@@ -303602,6 +303647,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303619,6 +303667,9 @@ export interface ActorSkill {
@@ -303619,6 +303667,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303636,6 +303687,9 @@ export interface ActorSkill {
@@ -303636,6 +303687,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303653,6 +303707,9 @@ export interface ActorSkill {
@@ -303653,6 +303707,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303670,6 +303727,9 @@ export interface ActorSkill {
@@ -303670,6 +303727,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303687,6 +303747,9 @@ export interface ActorSkill {
@@ -303687,6 +303747,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303706,6 +303769,9 @@ export interface ActorSkill {
@@ -303706,6 +303769,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303723,6 +303789,9 @@ export interface ActorSkill {
@@ -303723,6 +303789,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303740,6 +303809,9 @@ export interface ActorSkill {
@@ -303740,6 +303809,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303757,6 +303829,9 @@ export interface ActorSkill {
@@ -303757,6 +303829,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303774,6 +303849,9 @@ export interface ActorSkill {
@@ -303774,6 +303849,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303791,6 +303869,9 @@ export interface ActorSkill {
@@ -303791,6 +303869,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303808,6 +303889,9 @@ export interface ActorSkill {
@@ -303808,6 +303889,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303827,6 +303911,9 @@ export interface ActorSkill {
@@ -303827,6 +303911,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303844,6 +303931,9 @@ export interface ActorSkill {
@@ -303844,6 +303931,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303861,6 +303951,9 @@ export interface ActorSkill {
@@ -303861,6 +303951,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303878,6 +303971,9 @@ export interface ActorSkill {
@@ -303878,6 +303971,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303895,6 +303991,9 @@ export interface ActorSkill {
@@ -303895,6 +303991,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303912,6 +304011,9 @@ export interface ActorSkill {
@@ -303912,6 +304011,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303929,6 +304031,9 @@ export interface ActorSkill {
@@ -303929,6 +304031,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303946,6 +304051,9 @@ export interface ActorSkill {
@@ -303946,6 +304051,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -303965,6 +304073,9 @@ export interface ActorSkill {
@@ -303965,6 +304073,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303982,6 +304093,9 @@ export interface ActorSkill {
@@ -303982,6 +304093,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -303999,6 +304113,9 @@ export interface ActorSkill {
@@ -303999,6 +304113,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304016,6 +304133,9 @@ export interface ActorSkill {
@@ -304016,6 +304133,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304033,6 +304153,9 @@ export interface ActorSkill {
@@ -304033,6 +304153,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304050,6 +304173,9 @@ export interface ActorSkill {
@@ -304050,6 +304173,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304067,6 +304193,9 @@ export interface ActorSkill {
@@ -304067,6 +304193,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304084,6 +304213,9 @@ export interface ActorSkill {
@@ -304084,6 +304213,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304101,6 +304233,9 @@ export interface ActorSkill {
@@ -304101,6 +304233,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -304120,6 +304255,9 @@ export interface ActorSkill {
@@ -304120,6 +304255,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304137,6 +304275,9 @@ export interface ActorSkill {
@@ -304137,6 +304275,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304154,6 +304295,9 @@ export interface ActorSkill {
@@ -304154,6 +304295,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304171,6 +304315,9 @@ export interface ActorSkill {
@@ -304171,6 +304315,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304188,6 +304335,9 @@ export interface ActorSkill {
@@ -304188,6 +304335,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304205,6 +304355,9 @@ export interface ActorSkill {
@@ -304205,6 +304355,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304222,6 +304375,9 @@ export interface ActorSkill {
@@ -304222,6 +304375,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304239,6 +304395,9 @@ export interface ActorSkill {
@@ -304239,6 +304395,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304256,6 +304415,9 @@ export interface ActorSkill {
@@ -304256,6 +304415,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304273,6 +304435,9 @@ export interface ActorSkill {
@@ -304273,6 +304435,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -304292,6 +304457,9 @@ export interface ActorSkill {
@@ -304292,6 +304457,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304309,6 +304477,9 @@ export interface ActorSkill {
@@ -304309,6 +304477,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304326,6 +304497,9 @@ export interface ActorSkill {
@@ -304326,6 +304497,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304343,6 +304517,9 @@ export interface ActorSkill {
@@ -304343,6 +304517,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304360,6 +304537,9 @@ export interface ActorSkill {
@@ -304360,6 +304537,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304377,6 +304557,9 @@ export interface ActorSkill {
@@ -304377,6 +304557,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304394,6 +304577,9 @@ export interface ActorSkill {
@@ -304394,6 +304577,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304411,6 +304597,9 @@ export interface ActorSkill {
@@ -304411,6 +304597,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304428,6 +304617,9 @@ export interface ActorSkill {
@@ -304428,6 +304617,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304445,6 +304637,9 @@ export interface ActorSkill {
@@ -304445,6 +304637,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304462,6 +304657,9 @@ export interface ActorSkill {
@@ -304462,6 +304657,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -304481,6 +304679,9 @@ export interface ActorSkill {
@@ -304481,6 +304679,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304498,6 +304699,9 @@ export interface ActorSkill {
@@ -304498,6 +304699,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304515,6 +304719,9 @@ export interface ActorSkill {
@@ -304515,6 +304719,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304532,6 +304739,9 @@ export interface ActorSkill {
@@ -304532,6 +304739,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304549,6 +304759,9 @@ export interface ActorSkill {
@@ -304549,6 +304759,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304566,6 +304779,9 @@ export interface ActorSkill {
@@ -304566,6 +304779,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304583,6 +304799,9 @@ export interface ActorSkill {
@@ -304583,6 +304799,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304600,6 +304819,9 @@ export interface ActorSkill {
@@ -304600,6 +304819,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304617,6 +304839,9 @@ export interface ActorSkill {
@@ -304617,6 +304839,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304634,6 +304859,9 @@ export interface ActorSkill {
@@ -304634,6 +304859,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304651,6 +304879,9 @@ export interface ActorSkill {
@@ -304651,6 +304879,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304668,6 +304899,9 @@ export interface ActorSkill {
@@ -304668,6 +304899,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -304687,6 +304921,9 @@ export interface ActorSkill {
@@ -304687,6 +304921,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304704,6 +304941,9 @@ export interface ActorSkill {
@@ -304704,6 +304941,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304721,6 +304961,9 @@ export interface ActorSkill {
@@ -304721,6 +304961,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304738,6 +304981,9 @@ export interface ActorSkill {
@@ -304738,6 +304981,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304755,6 +305001,9 @@ export interface ActorSkill {
@@ -304755,6 +305001,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304772,6 +305021,9 @@ export interface ActorSkill {
@@ -304772,6 +305021,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304789,6 +305041,9 @@ export interface ActorSkill {
@@ -304789,6 +305041,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304806,6 +305061,9 @@ export interface ActorSkill {
@@ -304806,6 +305061,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304823,6 +305081,9 @@ export interface ActorSkill {
@@ -304823,6 +305081,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304840,6 +305101,9 @@ export interface ActorSkill {
@@ -304840,6 +305101,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304857,6 +305121,9 @@ export interface ActorSkill {
@@ -304857,6 +305121,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304874,6 +305141,9 @@ export interface ActorSkill {
@@ -304874,6 +305141,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304891,6 +305161,9 @@ export interface ActorSkill {
@@ -304891,6 +305161,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -304910,6 +305183,9 @@ export interface ActorSkill {
@@ -304910,6 +305183,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304927,6 +305203,9 @@ export interface ActorSkill {
@@ -304927,6 +305203,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304944,6 +305223,9 @@ export interface ActorSkill {
@@ -304944,6 +305223,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304961,6 +305243,9 @@ export interface ActorSkill {
@@ -304961,6 +305243,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304978,6 +305263,9 @@ export interface ActorSkill {
@@ -304978,6 +305263,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -304995,6 +305283,9 @@ export interface ActorSkill {
@@ -304995,6 +305283,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305012,6 +305303,9 @@ export interface ActorSkill {
@@ -305012,6 +305303,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305029,6 +305323,9 @@ export interface ActorSkill {
@@ -305029,6 +305323,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305046,6 +305343,9 @@ export interface ActorSkill {
@@ -305046,6 +305343,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305063,6 +305363,9 @@ export interface ActorSkill {
@@ -305063,6 +305363,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305080,6 +305383,9 @@ export interface ActorSkill {
@@ -305080,6 +305383,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305097,6 +305403,9 @@ export interface ActorSkill {
@@ -305097,6 +305403,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305114,6 +305423,9 @@ export interface ActorSkill {
@@ -305114,6 +305423,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305131,6 +305443,9 @@ export interface ActorSkill {
@@ -305131,6 +305443,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
)
)
]
]
| [
| [
@@ -305150,6 +305465,9 @@ export interface ActorSkill {
@@ -305150,6 +305465,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305167,6 +305485,9 @@ export interface ActorSkill {
@@ -305167,6 +305485,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305184,6 +305505,9 @@ export interface ActorSkill {
@@ -305184,6 +305505,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305201,6 +305525,9 @@ export interface ActorSkill {
@@ -305201,6 +305525,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305218,6 +305545,9 @@ export interface ActorSkill {
@@ -305218,6 +305545,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305235,6 +305565,9 @@ export interface ActorSkill {
@@ -305235,6 +305565,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305252,6 +305585,9 @@ export interface ActorSkill {
@@ -305252,6 +305585,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305269,6 +305605,9 @@ export interface ActorSkill {
@@ -305269,6 +305605,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305286,6 +305625,9 @@ export interface ActorSkill {
@@ -305286,6 +305625,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305303,6 +305645,9 @@ export interface ActorSkill {
@@ -305303,6 +305645,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305320,6 +305665,9 @@ export interface ActorSkill {
@@ -305320,6 +305665,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305337,6 +305685,9 @@ export interface ActorSkill {
@@ -305337,6 +305685,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305354,6 +305705,9 @@ export interface ActorSkill {
@@ -305354,6 +305705,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305371,6 +305725,9 @@ export interface ActorSkill {
@@ -305371,6 +305725,9 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
),
),
(
(
| "codes.task"
| "codes.task"
@@ -305388,263 +305745,1294 @@ export interface ActorSkill {
@@ -305388,263 +305745,1294 @@ export interface ActorSkill {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "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,
string,
string,
string,
@@ -305662,8 +307050,6 @@ export interface ActorSkill {
@@ -305662,8 +307050,6 @@ export interface ActorSkill {
string,
string,
string,
string,
string,
string,
- string,
- string,
string
string
];
];
};
};
@@ -305695,7 +307081,7 @@ export interface ActorSkill {
@@ -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.
* 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 = {
@@ -309537,27 +310923,970 @@ export type ActorSkillV2 = {
/**
/**
* The kinds of act (actor approvals, HO1) its steps may be.
* The kinds of act (actor approvals, HO1) its steps may be.
*
*
- * @maxItems 16
+ * @maxItems 19
*/
*/
kinds?:
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 = {
@@ -309576,6 +311905,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309594,10 +311926,11 @@ export type ActorSkillV2 = {
@@ -309594,10 +311926,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -309614,6 +311947,9 @@ export type ActorSkillV2 = {
@@ -309614,6 +311947,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309632,6 +311968,9 @@ export type ActorSkillV2 = {
@@ -309632,6 +311968,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309650,10 +311989,32 @@ export type ActorSkillV2 = {
@@ -309650,10 +311989,32 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "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"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -309670,6 +312031,9 @@ export type ActorSkillV2 = {
@@ -309670,6 +312031,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309688,6 +312052,9 @@ export type ActorSkillV2 = {
@@ -309688,6 +312052,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309706,6 +312073,9 @@ export type ActorSkillV2 = {
@@ -309706,6 +312073,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309724,6 +312094,9 @@ export type ActorSkillV2 = {
@@ -309724,6 +312094,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
)
)
]
]
@@ -309744,6 +312117,9 @@ export type ActorSkillV2 = {
@@ -309744,6 +312117,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309762,6 +312138,9 @@ export type ActorSkillV2 = {
@@ -309762,6 +312138,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309780,6 +312159,9 @@ export type ActorSkillV2 = {
@@ -309780,6 +312159,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309798,6 +312180,9 @@ export type ActorSkillV2 = {
@@ -309798,6 +312180,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309816,10 +312201,11 @@ export type ActorSkillV2 = {
@@ -309816,10 +312201,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -309836,6 +312222,9 @@ export type ActorSkillV2 = {
@@ -309836,6 +312222,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309854,6 +312243,9 @@ export type ActorSkillV2 = {
@@ -309854,6 +312243,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309872,6 +312264,9 @@ export type ActorSkillV2 = {
@@ -309872,6 +312264,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309890,6 +312285,9 @@ export type ActorSkillV2 = {
@@ -309890,6 +312285,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309908,6 +312306,9 @@ export type ActorSkillV2 = {
@@ -309908,6 +312306,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309926,6 +312327,9 @@ export type ActorSkillV2 = {
@@ -309926,6 +312327,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
)
)
]
]
@@ -309946,6 +312350,9 @@ export type ActorSkillV2 = {
@@ -309946,6 +312350,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309964,6 +312371,9 @@ export type ActorSkillV2 = {
@@ -309964,6 +312371,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -309982,6 +312392,9 @@ export type ActorSkillV2 = {
@@ -309982,6 +312392,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310000,6 +312413,9 @@ export type ActorSkillV2 = {
@@ -310000,6 +312413,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310018,6 +312434,9 @@ export type ActorSkillV2 = {
@@ -310018,6 +312434,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310036,6 +312455,9 @@ export type ActorSkillV2 = {
@@ -310036,6 +312455,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310054,10 +312476,11 @@ export type ActorSkillV2 = {
@@ -310054,10 +312476,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -310074,6 +312497,9 @@ export type ActorSkillV2 = {
@@ -310074,6 +312497,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310092,6 +312518,9 @@ export type ActorSkillV2 = {
@@ -310092,6 +312518,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310110,6 +312539,9 @@ export type ActorSkillV2 = {
@@ -310110,6 +312539,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310128,6 +312560,9 @@ export type ActorSkillV2 = {
@@ -310128,6 +312560,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310146,6 +312581,32 @@ export type ActorSkillV2 = {
@@ -310146,6 +312581,32 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "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"
| "skill.run"
),
),
(
(
@@ -310164,6 +312625,9 @@ export type ActorSkillV2 = {
@@ -310164,6 +312625,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310182,6 +312646,9 @@ export type ActorSkillV2 = {
@@ -310182,6 +312646,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310200,10 +312667,11 @@ export type ActorSkillV2 = {
@@ -310200,10 +312667,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -310220,6 +312688,9 @@ export type ActorSkillV2 = {
@@ -310220,6 +312688,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310238,6 +312709,9 @@ export type ActorSkillV2 = {
@@ -310238,6 +312709,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310256,6 +312730,9 @@ export type ActorSkillV2 = {
@@ -310256,6 +312730,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310274,6 +312751,9 @@ export type ActorSkillV2 = {
@@ -310274,6 +312751,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310292,6 +312772,9 @@ export type ActorSkillV2 = {
@@ -310292,6 +312772,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310310,6 +312793,9 @@ export type ActorSkillV2 = {
@@ -310310,6 +312793,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310328,6 +312814,9 @@ export type ActorSkillV2 = {
@@ -310328,6 +312814,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310346,6 +312835,9 @@ export type ActorSkillV2 = {
@@ -310346,6 +312835,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310364,6 +312856,9 @@ export type ActorSkillV2 = {
@@ -310364,6 +312856,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
)
)
]
]
@@ -310384,6 +312879,9 @@ export type ActorSkillV2 = {
@@ -310384,6 +312879,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310402,6 +312900,9 @@ export type ActorSkillV2 = {
@@ -310402,6 +312900,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310420,6 +312921,9 @@ export type ActorSkillV2 = {
@@ -310420,6 +312921,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310438,6 +312942,9 @@ export type ActorSkillV2 = {
@@ -310438,6 +312942,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310456,6 +312963,9 @@ export type ActorSkillV2 = {
@@ -310456,6 +312963,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310474,6 +312984,9 @@ export type ActorSkillV2 = {
@@ -310474,6 +312984,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310492,6 +313005,9 @@ export type ActorSkillV2 = {
@@ -310492,6 +313005,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310510,6 +313026,9 @@ export type ActorSkillV2 = {
@@ -310510,6 +313026,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310528,6 +313047,9 @@ export type ActorSkillV2 = {
@@ -310528,6 +313047,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310546,10 +313068,11 @@ export type ActorSkillV2 = {
@@ -310546,10 +313068,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -310566,6 +313089,9 @@ export type ActorSkillV2 = {
@@ -310566,6 +313089,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310584,6 +313110,9 @@ export type ActorSkillV2 = {
@@ -310584,6 +313110,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310602,6 +313131,9 @@ export type ActorSkillV2 = {
@@ -310602,6 +313131,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310620,8 +313152,13 @@ export type ActorSkillV2 = {
@@ -310620,8 +313152,13 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- ),
+ )
+ ]
+ | [
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -310638,6 +313175,9 @@ export type ActorSkillV2 = {
@@ -310638,6 +313175,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310656,6 +313196,9 @@ export type ActorSkillV2 = {
@@ -310656,6 +313196,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310674,6 +313217,9 @@ export type ActorSkillV2 = {
@@ -310674,6 +313217,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310692,6 +313238,9 @@ export type ActorSkillV2 = {
@@ -310692,6 +313238,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310710,6 +313259,9 @@ export type ActorSkillV2 = {
@@ -310710,6 +313259,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310728,6 +313280,9 @@ export type ActorSkillV2 = {
@@ -310728,6 +313280,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310746,10 +313301,11 @@ export type ActorSkillV2 = {
@@ -310746,10 +313301,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -310766,6 +313322,9 @@ export type ActorSkillV2 = {
@@ -310766,6 +313322,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310784,6 +313343,9 @@ export type ActorSkillV2 = {
@@ -310784,6 +313343,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310802,6 +313364,9 @@ export type ActorSkillV2 = {
@@ -310802,6 +313364,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310820,6 +313385,9 @@ export type ActorSkillV2 = {
@@ -310820,6 +313385,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310838,6 +313406,9 @@ export type ActorSkillV2 = {
@@ -310838,6 +313406,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310856,6 +313427,9 @@ export type ActorSkillV2 = {
@@ -310856,6 +313427,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310874,6 +313448,9 @@ export type ActorSkillV2 = {
@@ -310874,6 +313448,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310892,6 +313469,32 @@ export type ActorSkillV2 = {
@@ -310892,6 +313469,32 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "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"
| "skill.run"
),
),
(
(
@@ -310910,6 +313513,9 @@ export type ActorSkillV2 = {
@@ -310910,6 +313513,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310928,6 +313534,9 @@ export type ActorSkillV2 = {
@@ -310928,6 +313534,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310946,6 +313555,9 @@ export type ActorSkillV2 = {
@@ -310946,6 +313555,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -310964,10 +313576,11 @@ export type ActorSkillV2 = {
@@ -310964,10 +313576,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -310984,6 +313597,9 @@ export type ActorSkillV2 = {
@@ -310984,6 +313597,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311002,6 +313618,9 @@ export type ActorSkillV2 = {
@@ -311002,6 +313618,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311020,6 +313639,9 @@ export type ActorSkillV2 = {
@@ -311020,6 +313639,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311038,6 +313660,9 @@ export type ActorSkillV2 = {
@@ -311038,6 +313660,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311056,6 +313681,9 @@ export type ActorSkillV2 = {
@@ -311056,6 +313681,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311074,6 +313702,9 @@ export type ActorSkillV2 = {
@@ -311074,6 +313702,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311092,6 +313723,9 @@ export type ActorSkillV2 = {
@@ -311092,6 +313723,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311110,6 +313744,9 @@ export type ActorSkillV2 = {
@@ -311110,6 +313744,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311128,6 +313765,9 @@ export type ActorSkillV2 = {
@@ -311128,6 +313765,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311146,6 +313786,9 @@ export type ActorSkillV2 = {
@@ -311146,6 +313786,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311164,6 +313807,32 @@ export type ActorSkillV2 = {
@@ -311164,6 +313807,32 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "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"
| "skill.run"
),
),
(
(
@@ -311182,6 +313851,9 @@ export type ActorSkillV2 = {
@@ -311182,6 +313851,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311200,10 +313872,11 @@ export type ActorSkillV2 = {
@@ -311200,10 +313872,11 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
- )
- ]
- | [
+ ),
(
(
| "codes.task"
| "codes.task"
| "actor.action"
| "actor.action"
@@ -311220,6 +313893,9 @@ export type ActorSkillV2 = {
@@ -311220,6 +313893,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311238,6 +313914,9 @@ export type ActorSkillV2 = {
@@ -311238,6 +313914,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311256,6 +313935,9 @@ export type ActorSkillV2 = {
@@ -311256,6 +313935,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311274,6 +313956,9 @@ export type ActorSkillV2 = {
@@ -311274,6 +313956,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311292,6 +313977,9 @@ export type ActorSkillV2 = {
@@ -311292,6 +313977,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311310,6 +313998,9 @@ export type ActorSkillV2 = {
@@ -311310,6 +313998,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311328,6 +314019,9 @@ export type ActorSkillV2 = {
@@ -311328,6 +314019,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311346,6 +314040,9 @@ export type ActorSkillV2 = {
@@ -311346,6 +314040,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311364,6 +314061,9 @@ export type ActorSkillV2 = {
@@ -311364,6 +314061,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311382,6 +314082,9 @@ export type ActorSkillV2 = {
@@ -311382,6 +314082,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311400,6 +314103,9 @@ export type ActorSkillV2 = {
@@ -311400,6 +314103,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311418,6 +314124,9 @@ export type ActorSkillV2 = {
@@ -311418,6 +314124,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311436,6 +314145,9 @@ export type ActorSkillV2 = {
@@ -311436,6 +314145,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311454,6 +314166,9 @@ export type ActorSkillV2 = {
@@ -311454,6 +314166,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
)
)
]
]
@@ -311474,6 +314189,72 @@ export type ActorSkillV2 = {
@@ -311474,6 +314189,72 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "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"
| "skill.run"
),
),
(
(
@@ -311492,6 +314273,9 @@ export type ActorSkillV2 = {
@@ -311492,6 +314273,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311510,6 +314294,9 @@ export type ActorSkillV2 = {
@@ -311510,6 +314294,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311528,6 +314315,9 @@ export type ActorSkillV2 = {
@@ -311528,6 +314315,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311546,6 +314336,9 @@ export type ActorSkillV2 = {
@@ -311546,6 +314336,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311564,6 +314357,9 @@ export type ActorSkillV2 = {
@@ -311564,6 +314357,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311582,6 +314378,9 @@ export type ActorSkillV2 = {
@@ -311582,6 +314378,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311600,6 +314399,9 @@ export type ActorSkillV2 = {
@@ -311600,6 +314399,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311618,6 +314420,9 @@ export type ActorSkillV2 = {
@@ -311618,6 +314420,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311636,6 +314441,9 @@ export type ActorSkillV2 = {
@@ -311636,6 +314441,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311654,6 +314462,9 @@ export type ActorSkillV2 = {
@@ -311654,6 +314462,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311672,6 +314483,9 @@ export type ActorSkillV2 = {
@@ -311672,6 +314483,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311690,6 +314504,9 @@ export type ActorSkillV2 = {
@@ -311690,6 +314504,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311708,6 +314525,9 @@ export type ActorSkillV2 = {
@@ -311708,6 +314525,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311726,6 +314546,9 @@ export type ActorSkillV2 = {
@@ -311726,6 +314546,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
)
)
]
]
@@ -311746,6 +314569,72 @@ export type ActorSkillV2 = {
@@ -311746,6 +314569,72 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "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"
| "skill.run"
),
),
(
(
@@ -311764,6 +314653,9 @@ export type ActorSkillV2 = {
@@ -311764,6 +314653,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311782,6 +314674,9 @@ export type ActorSkillV2 = {
@@ -311782,6 +314674,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311800,6 +314695,9 @@ export type ActorSkillV2 = {
@@ -311800,6 +314695,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311818,6 +314716,9 @@ export type ActorSkillV2 = {
@@ -311818,6 +314716,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311836,6 +314737,9 @@ export type ActorSkillV2 = {
@@ -311836,6 +314737,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311854,6 +314758,9 @@ export type ActorSkillV2 = {
@@ -311854,6 +314758,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311872,6 +314779,9 @@ export type ActorSkillV2 = {
@@ -311872,6 +314779,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311890,6 +314800,9 @@ export type ActorSkillV2 = {
@@ -311890,6 +314800,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311908,6 +314821,9 @@ export type ActorSkillV2 = {
@@ -311908,6 +314821,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311926,6 +314842,9 @@ export type ActorSkillV2 = {
@@ -311926,6 +314842,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311944,6 +314863,9 @@ export type ActorSkillV2 = {
@@ -311944,6 +314863,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311962,6 +314884,9 @@ export type ActorSkillV2 = {
@@ -311962,6 +314884,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311980,6 +314905,9 @@ export type ActorSkillV2 = {
@@ -311980,6 +314905,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -311998,6 +314926,9 @@ export type ActorSkillV2 = {
@@ -311998,6 +314926,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
),
),
(
(
@@ -312016,6 +314947,9 @@ export type ActorSkillV2 = {
@@ -312016,6 +314947,9 @@ export type ActorSkillV2 = {
| "install"
| "install"
| "routine"
| "routine"
| "money"
| "money"
+ | "device.camera"
+ | "device.location"
+ | "device.notify"
| "skill.run"
| "skill.run"
)
)
];
];
@@ -312324,6 +315258,49 @@ export type ActorSkillV2 = {
@@ -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) */
/** [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.
* 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.
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.344.0",
+ "version": "0.345.0",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.344.0",
+ "version": "0.345.0",
"license": "AGPL-3.0-only",
"license": "AGPL-3.0-only",
"dependencies": {
"dependencies": {
"ajv": "^8.17.1",
"ajv": "^8.17.1",
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"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.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",
@@ -84,6 +84,20 @@ const FULL_CHECK = {
@@ -84,6 +84,20 @@ const FULL_CHECK = {
? { valid: false, errors: missing.map((t) => ({ path: '/tools', message: `entry ${t.entry} names no resource` })) }
? { valid: false, errors: missing.map((t) => ({ path: '/tools', message: `entry ${t.entry} names no resource` })) }
: r;
: 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. */
/** The ref a fixture names itself (`skill: actor.skill@2`) or the bare id (newest major) when it names none. */
const majorRef = (id, value) => {
const majorRef = (id, value) => {
@@ -1137,7 +1151,7 @@ sub(path.join(__dirname, 'changelog-history.test.js'));
@@ -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(!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');
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',
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)');
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;
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');
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'));
@@ -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');
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 ─────────────────────────────────────
// ── actor.voice@1: the integrity hash ─────────────────────────────────────
// The integrity block is a sha256 over the canonical JSON of the document (the contract's description
// 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
// says which fields it holds and in which order). It shows the file was not edited after it was