Схема пакета¶
Справочник полей всех файлов пакета: обёртка объекта, каждый вид каталога,
тесты пакета, фиксация источников packages.lock, план установки и экраны. Таблицы
построены из JSON Schema sdk/package-sdk/schema/v1 и повторяют её поле в поле.
Статья для авторов пакетов; как этим пользоваться, объясняют Анатомия
пакета, Процессы,
Выражения и Тесты пакета.
Схема — первая ступень проверки
Схема проверяет форму описания. Вторую ступень — ссылки между объектами,
типы выражений, неизвестные поля данных, достижимость шагов, пробелы
таблиц решений — выполняют package-sdk check и валидаторы ядра (см.
Тесты пакета).
Подключить схему к редактору — строка в начале файла объекта:
Как читать таблицы: «Тип» — тип JSON или ссылка на определение ниже;
array of — массив, map → — объект с произвольными ключами; «Условия» —
поля, которые обязательны или меняют форму при значении другого поля.
Обёртка объекта¶
Каждый файл объекта пакета — package.yaml, файлы видов каталога и установка — одна обёртка apiVersion + kind + key + spec. Тип ключа и форма spec зависят от вида (таблица «Условия»).
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
object¶
One wrapper for the manifest and every catalog kind: apiVersion + kind + key + spec. spec is the control-plane API request body in camelCase without the identity field. The schema checks the shape; the final check is done by the core (and by package-sdk check with its validators).
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
apiVersion |
= taimen.ai/v1 |
да | |
kind |
Package | Installation | ArtifactType | TaskType | ProjectTemplate | WorkspaceType | Role | Capability | ConnectionType | Skill | WorkRule | Agent | NotificationRule | Process | Calendar | KnowledgePack |
да | |
key |
string |
да | |
spec |
object |
да |
Условия:
| Условие | Следствие |
|---|---|
kind = Package |
key: typeKey; spec: packageSpec |
kind = Installation |
spec: installationSpec |
kind = ArtifactType |
key: typeKey; spec: artifactTypeSpec |
kind = TaskType |
key: typeKey; spec: taskTypeSpec |
kind = ProjectTemplate |
key: typeKey; spec: projectTemplateSpec |
kind = WorkspaceType |
key: typeKey; spec: workspaceTypeSpec |
kind = Role |
key: slug; spec: roleSpec |
kind = Capability |
spec: capabilitySpec |
kind = ConnectionType |
key: connectionKey; spec: connectionTypeSpec |
kind = Skill |
spec: skillSpec |
kind = WorkRule |
key: ruleKey; spec: workRuleSpec |
kind = Agent |
key: slug; spec: agentSpec |
kind = NotificationRule |
key: ruleKey; spec: notificationRuleSpec |
kind = Process |
key: typeKey; spec: processSpec |
kind = KnowledgePack |
key: string; spec: knowledge-pack |
kind = Calendar |
key: typeKey; spec: calendarSpec |
Манифест пакета (kind: Package)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
packageSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
version |
string |
да | Package SemVer |
displayName |
displayName |
да | |
description |
string |
||
requires |
array of typeKey или объект {package, version} |
Packages whose objects this package refers to: a key (any version) or {package, version} with a SemVer range | |
engines |
map → semverRange |
Version ranges of the components the package is tested against, e.g. {control-plane: ">=0.9,<0.11"}; check and plan reject an incompatible version before writing | |
variables |
map → packageVariable |
Declaration of every ${NAME} of the package. A used variable must be declared, a declared one must be used. There are no secrets in a package: a variable has no secret field | |
knowledge |
array of string |
Ontologies (name@major) the package's processes and rules rely on; check matches them against recall/remember/memory of the processes | |
license |
string |
Package license (SPDX identifier) | |
authors |
array of string |
||
homepage |
string |
||
renames |
array of объект | Explicit object renames (like moved in Terraform): the plan moves the object instead of deleting and creating it | |
settings |
packageSettings |
packageSpec.requires[] (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
package |
typeKey |
да | |
version |
semverRange |
packageSpec.renames[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
string |
да | |
from |
string |
да | |
to |
string |
да |
semverRange¶
Version range: comma-separated conditions, all must hold (>=0.9,<0.11); operators >=, >, <=, <, =, ^, ~; without an operator, a version or prefix (1.2 = 1.2.x); * means any
Значение: string.
packageVariable¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
description |
string |
да | |
kind |
url | workspace | project | principal | role | string | integer |
да | Value kind: url is an absolute URL; workspace|project|principal|role is a UUID existing on the environment (checked by plan); integer is an integer; string is anything |
required |
boolean |
По умолчанию true. |
|
default |
string |
Value used if the installation did not set its own | |
example |
string |
packageSettings¶
Package settings: values an organization administrator changes in the live system without a new package version or an installation plan. Values live in the core; processes, work rules and views read them as settings.<field>
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
schema |
settingsSchema |
да | |
uischema |
settingsUiElement |
Form layout: the closed subset of JSON Forms the console renders — VerticalLayout, HorizontalLayout, Group, Control and Label with SHOW/HIDE/ENABLE/DISABLE rules; anything else, options of a Control included, is rejected. Labels are keys of the package dictionaries, not texts: label of a Group and of a Control, text of a Label. Unlike the uischema of process step forms, which is open and whose label is a text. Without it the console lays the fields out in schema order |
settingsSchema¶
Schema of the settings: a subset of JSON Schema, as for process data. The root is an object; objects nest at most 3 levels deep; at most 100 properties per object. Field labels are not in the schema: they are keys <package>.settings.<path> of the package dictionaries
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
= object |
да | |
properties |
map → settingsField1 |
да | |
required |
settingsRequired |
||
additionalProperties |
= false |
Implied on every object: a value with an undeclared member is refused |
settingsFieldName¶
Field name: camelCase, as referenced in expressions (settings.<field>)
Значение: string.
settingsField1¶
Включает settingsKeywords.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
properties |
любое | ||
items |
settingsField2 |
settingsKeywords¶
One settings field: only the keywords listed here; secret markers (writeOnly, format: password) and keywords outside the subset are rejected
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string | integer | number | boolean | array | object |
да | |
properties |
object |
||
required |
settingsRequired |
||
additionalProperties |
= false |
||
enum |
array of settingsScalar |
||
minimum |
number |
||
maximum |
number |
||
minLength |
integer |
||
maxLength |
integer |
||
pattern |
string |
ECMA-262 regular expression | |
format |
date | uri | email | uuid |
||
items |
object |
||
minItems |
integer |
||
maxItems |
integer |
||
default |
любое | Value in effect until an administrator saves another; every optional field must have one (package-sdk check) | |
x-ref |
role | principal | workspace | calendar | taskType |
The string references a platform object of this kind in the organization: the id of a role, principal or workspace, the key of a task type or calendar; the core rejects a value that references a missing object |
Условия:
| Условие | Следствие |
|---|---|
type = object |
обязательно properties |
| иначе | properties: не допускается; required: не допускается; additionalProperties: не допускается |
type = array |
обязательно items |
| иначе | items: не допускается; minItems: не допускается; maxItems: не допускается |
| иначе | minLength: не допускается; maxLength: не допускается; pattern: не допускается; format: не допускается; x-ref: не допускается |
| иначе | minimum: не допускается; maximum: не допускается |
settingsRequired¶
Fields that must always have a value
Значение: array of settingsFieldName.
settingsScalar¶
Значение: string | integer | number | boolean.
settingsField2¶
Включает settingsKeywords.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
properties |
любое | ||
items |
settingsField3 |
settingsField3¶
The deepest level: a scalar field or an array of scalars, no nested objects
Включает settingsKeywords.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string | integer | number | boolean | array |
||
items |
settingsKeywords |
settingsUiElement¶
Element of the settings form: VerticalLayout, HorizontalLayout, Group, Control or Label. Other JSON Forms elements (Categorization, ListWithDetail, custom renderers) are not rendered by the console and are rejected
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
VerticalLayout | HorizontalLayout | Group | Control | Label |
да |
Условия:
| Условие | Следствие |
|---|---|
type ∈ VerticalLayout, HorizontalLayout |
обязательно elements; elements: settingsUiElements; rule: settingsUiRule |
type = Group |
обязательно label, elements; label: settingsLabelKey; elements: settingsUiElements; rule: settingsUiRule |
type = Control |
обязательно scope; scope: settingsScope; label: settingsLabelKey; rule: settingsUiRule |
type = Label |
обязательно text; text: settingsLabelKey; rule: settingsUiRule |
settingsUiElements¶
Значение: array of settingsUiElement.
settingsUiRule¶
JSON Forms rule: the effect applies while the value at condition.scope matches condition.schema
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
effect |
SHOW | HIDE | ENABLE | DISABLE |
да | |
condition |
объект | да |
settingsUiRule.condition¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
scope |
settingsScope |
да | |
schema |
объект | да | Condition on the value: the keywords of a settings field without x-ref and default, and const |
failWhenUndefined |
boolean |
settingsUiRule.condition.schema¶
Condition on the value: the keywords of a settings field without x-ref and default, and const
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string | integer | number | boolean | array | object |
||
const |
settingsScalar |
||
enum |
array of settingsScalar |
||
minimum |
number |
||
maximum |
number |
||
minLength |
integer |
||
maxLength |
integer |
||
pattern |
string |
||
format |
date | uri | email | uuid |
||
minItems |
integer |
||
maxItems |
integer |
settingsScope¶
JSON Pointer to a property of the settings schema: #/properties/<field>[/properties/<field>…]
Значение: string.
settingsLabelKey¶
Key of the package dictionaries (<package>.settings.<name>), not the text: the console shows its string in the user's language
Значение: string.
Установка (kind: Installation)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
installationSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
packages |
array of packageSource |
да | Installation packages: a key (installation catalog), {key, path} or {key, git, ref}; requires are pulled in automatically. Empty means only the core's system task type |
packagesDir |
string |
Installation packages directory relative to the installation file; defaults to packages/ next to it | |
knowledge |
array of объект | Ontology inclusion for work spaces is topology, hence in the installation; the set replaces the previous one entirely | |
retire |
объект | Keys the environment retires (all active versions → deprecated) |
installationSpec.knowledge[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
workspace |
string |
да | Installation ${VARIABLE} or UUID |
packs |
array of string |
да | |
strict |
boolean |
Strict memory mode: records outside the included kinds are rejected rather than accepted as is. По умолчанию false. |
installationSpec.retire¶
Keys the environment retires (all active versions → deprecated)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
TaskType |
array of typeKey |
||
ProjectTemplate |
array of typeKey |
||
Agent |
array of slug |
The agent is retired: the executor is stopped, the credential revoked, the history kept | |
NotificationRule |
array of ruleKey |
The notification rule is retired in the notification service (:retire); sent notifications remain | |
WorkRule |
array of ruleKey |
The work rule is archived; work it created lives on | |
Process |
array of typeKey |
The process is retired via the core's :retire route: new instances do not start, live ones run to completion | |
Calendar |
array of typeKey |
A calendar is retired only if no active process refers to it (calendar_in_use) | |
ConnectionType |
array of connectionKey |
Every active version of the connection type becomes deprecated: no new connections of the type, existing ones keep working |
packageSource¶
Значение: typeKey или объект {key, path} или объект {key, git, ref, path}.
packageSource (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
typeKey |
да | |
path |
string |
да | Package directory path relative to the installation file |
packageSource (3)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
typeKey |
да | |
git |
string |
да | https://host/path without credentials in the address, or git@host:path; access through the git credential helper |
ref |
string |
да | Package release tag (refs/tags/<ref>; branches and commits are not accepted); packages.lock keeps it reproducible |
path |
string |
Package subdirectory in the repository if it is not at the root: a relative path without . and .. |
Тип артефакта (kind: ArtifactType)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
artifactTypeSpec¶
Artifact type: a versioned immutable catalog object, like TaskType.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
displayName |
displayName |
да | |
description |
string |
||
metadataSchema |
jsonSchema |
Metadata schema of artifacts of this type (≤ 16 KiB) | |
mediaTypes |
array of mediaType |
Allowed content media types; any by default | |
maxBytes |
integer |
Content size limit; no more than the installation's global limit (CP_ARTIFACT_MAX_BYTES) |
Тип задачи (kind: TaskType)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
taskTypeSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
displayName |
displayName |
да | |
description |
string |
||
fieldSchema |
jsonSchema |
Task customFields schema | |
lifecycleSchema |
workItemLifecycle |
да | |
execution |
execution |
||
approvalSchema |
approvalSchema |
||
completionSchema |
object |
Work after the task completes: {onComplete: {when?, actions}}: ensureWork (customFields, relation, requestApproval) and comment. The core checks the grammar. | |
instructions |
string |
Instructions for the executor: Markdown ≤ 16 KiB, the task type layer after the platform and project contract. The core checks the size in bytes and the absence of secrets. | |
artifactSchema |
artifactSchema |
||
executorRoles |
array of slug |
Keys of the roles a person needs to take work of this type: a Role of the package, its requires or the tenant. Absent or empty — people are not restricted. The core refuses a role the tenant does not have (422 unknown_role). | |
acceptance |
array of acceptanceCriterion |
Default acceptance criteria for all tasks of the type: run after the required outputs and before the task's own criteria; a task cannot replace a type criterion, its criterion with the same key is rejected (422). deterministic with an external_write skill only after human in the same attempt. | |
contextSchema |
объект | Task context profile: anchors, traverse, asOf, budgetTokens. The core checks the grammar. |
taskTypeSpec.contextSchema¶
Task context profile: anchors, traverse, asOf, budgetTokens. The core checks the grammar.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
anchors |
array of любое | ||
traverse |
array of любое | ||
asOf |
taskCreated | now | origin |
||
budgetTokens |
integer |
workItemLifecycle¶
Включает lifecycle.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
statuses |
array of объект | ||
claimStatus |
statusKey |
Status on claim; not terminal | |
releaseStatus |
statusKey |
Status on release; not terminal | |
completionStatus |
statusKey |
Successful completion status; category terminal_success |
workItemLifecycle.statuses[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
category |
workItemCategory |
workItemCategory¶
Значение: backlog | active | blocked | terminal_success | terminal_cancelled.
execution¶
A task of this type is executed by one skill call
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skill |
string |
да | |
version |
string |
да | |
inputs |
string или map → string |
$.… path to the whole input or an object {inputName: path}; defaults to $.customFields |
approvalSchema¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
gates |
map → объект | Only the default gate is supported for now |
approvalSchema.gates.*¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
outcomes |
объект | да |
approvalSchema.gates.*.outcomes¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
approved |
array of outcomeAction |
||
rejected |
array of outcomeAction |
outcomeAction¶
One approval outcome action: an object with exactly one key. In strings, $.path expressions; the ! suffix makes the value required.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
ensureWork |
объект | ||
completeTask |
объект | ||
comment |
объект | ||
transition |
объект | ||
invokeSkill |
объект | Skill call; reactions run on the call's outcome |
outcomeAction.ensureWork¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | Task type key |
key |
string |
да | Idempotency key of the created work |
title |
string |
да | |
description |
string |
||
assignee |
string |
||
priority |
string |
||
workspace |
string |
||
relation |
map → string |
||
customFields |
map → string |
Fields of the created task: expressions/templates; checked against the target type's fieldSchema at execution | |
requestApproval |
объект | Gate approval on the task just created |
outcomeAction.ensureWork.requestApproval¶
Gate approval on the task just created
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
assignee |
string |
да | Principal id or role:<slug>, a role declared by the package (its holder decides); an expression or template |
comment |
string |
outcomeAction.completeTask¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
task |
string |
outcomeAction.comment¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
body |
string |
да | |
task |
string |
outcomeAction.transition¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
status |
string |
да | |
task |
string |
outcomeAction.invokeSkill¶
Skill call; reactions run on the call's outcome
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skill |
string |
да | name@version (required with a version for external_write) |
inputs |
object |
skill inputs; strings are $.task…, $.spawnedBy…, $.approval… expressions | |
expect |
object |
expected outputs fields; a mismatch triggers onFailure | |
onSuccess |
array of outcomeAction |
||
onFailure |
array of outcomeAction |
artifactSchema¶
Task type inputs and outputs. An input is the head revisions of artifacts of the required type on tasks via a relation; without a required input, claim is rejected (409 input_missing). A required output is a deterministic criterion of the verification stage.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
inputs |
array of объект | ||
outputs |
array of объект |
artifactSchema.inputs[]¶
Включает artifactSlot.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
любое | ||
type |
любое | ||
required |
любое | ||
from |
depends_on | spawned_by | parent |
да | Relation used to find the source task |
artifactSchema.outputs[]¶
Включает artifactSlot.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
любое | ||
type |
любое | ||
required |
любое | ||
mediaTypes |
любое | ||
content |
required | optional |
Whether the content must be in storage (otherwise a reference is enough). По умолчанию required. |
artifactSlot¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
string |
да | Input or output name; unique within inputs and within outputs |
type |
typeKey |
да | Artifact type key (ArtifactType) |
required |
boolean |
По умолчанию false. |
|
mediaTypes |
array of mediaType |
Narrowing of the artifact type's media types (a subset of its mediaTypes) |
acceptanceCriterion¶
Acceptance criterion: the core checks the spec grammar per kind
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
string |
да | |
kind |
deterministic | external_state | human | llm_judge |
да | |
description |
string |
да | |
spec |
object |
||
when |
array of string |
$.task… paths; the criterion runs only if all are non-empty, otherwise skipped |
Шаблон проекта (kind: ProjectTemplate)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
projectTemplateSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
displayName |
displayName |
да | |
description |
string |
||
fieldSchema |
jsonSchema |
||
lifecycleSchema |
projectLifecycle |
||
defaultConfig |
объект | ||
defaultViews |
array of любое | ||
governanceSchema |
объект | ||
memoryDefaults |
object |
projectTemplateSpec.defaultConfig¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
settings |
object |
||
views |
array of любое | ||
governance |
object |
||
memory |
object |
||
inheritance |
object |
projectTemplateSpec.governanceSchema¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
maxAutonomyLevel |
любое | ||
requireApprovalForRun |
boolean |
||
requireApprovalForCompletion |
boolean |
||
allowedTaskPriorities |
array of string |
||
allowedSkillProtocols |
array of string |
||
maxRunDurationSeconds |
number |
||
maxRunActions |
number |
||
maxConcurrentRuns |
number |
||
memoryScopeSharing |
любое |
projectLifecycle¶
Включает lifecycle.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
statuses |
array of объект |
projectLifecycle.statuses[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
category |
projectCategory |
projectCategory¶
Значение: planned | active | paused | terminal_success | terminal_cancelled.
Тип пространства работы (kind: WorkspaceType)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
workspaceTypeSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
displayName |
displayName |
да | |
description |
string |
||
fieldSchema |
jsonSchema |
||
allowedChildTypes |
array of string |
Роль (kind: Role)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
roleSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name |
displayName |
да | |
description |
string |
Способность (kind: Capability)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
capabilitySpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
description |
string |
Тип подключения (kind: ConnectionType)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
connectionTypeSpec¶
Connection type: what it takes to connect a system of this kind. Versions work as for Skill: the package sets the version, and a published (key, version) pair is immutable. A type carries no secret values: an administrator enters them in the console.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
version |
integer |
да | The package sets the version of the type; a published version is immutable |
displayName |
displayName |
да | |
description |
string |
||
auth |
array of oauth2 | token |
да | Ways to connect: oauth2 — a person consents at the provider, token — a long-lived key an administrator pastes |
oauth2 |
объект | ||
accountField |
объект | Account field: its label in the key form and the account check; required with token or with {account} in tokenUrlTemplate | |
settingsSchema |
объект | да | JSON Schema (draft 2020-12) of the connection's non-secret settings, root type: object. Properties named like secrets (password, token, clientSecret…) are refused |
defaultKey |
connectionKey |
да | Key of the default connection — the agents of the package name it in Agent.spec.connections |
Условия:
| Условие | Следствие |
|---|---|
| всегда | обязательно oauth2 |
| всегда | обязательно accountField |
| всегда | обязательно accountField; oauth2: |
connectionTypeSpec.oauth2¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
authorizeUrl |
string (uri) |
да | Where a person is sent to consent |
tokenUrlTemplate |
string |
да | Address of the code exchange and refresh; the only placeholder is {account}, the host is an external DNS name |
accountParam |
string |
Callback parameter that names the account; required when tokenUrlTemplate has | |
authStyle |
in_params | in_header |
да | How the client id and secret go to the exchange address: in the request body or as Authorization: Basic |
scopes |
array of string |
да | Requested permissions |
connectionTypeSpec.accountField¶
Account field: its label in the key form and the account check; required with token or with {account} in tokenUrlTemplate
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
title |
string |
да | |
description |
string |
||
pattern |
string |
да | Regular expression the whole account matches |
connectionTypeSpec.settingsSchema¶
JSON Schema (draft 2020-12) of the connection's non-secret settings, root type: object. Properties named like secrets (password, token, clientSecret…) are refused
Включает jsonSchema.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
= object |
да |
Скилл (kind: Skill)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
skillSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
version |
string |
да | The package sets the skill version |
description |
string |
||
protocol |
mcp | http | local | opencode | custom |
||
config |
object |
||
inputSchema |
jsonSchema |
||
outputSchema |
jsonSchema |
||
sideEffects |
none | external_read | external_write |
||
riskLevel |
low | medium | high |
||
contract |
skillContract |
skillContract¶
Skill v1 contract. Immutable within a version.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
inputs |
jsonSchema |
да | |
outputs |
jsonSchema |
да | |
requiredPermissions |
array of string |
||
preconditions |
array of любое | ||
postconditions |
array of любое | ||
timeoutSeconds |
integer |
||
retryPolicy |
объект | ||
idempotency |
required | natural | none |
||
costModel |
объект | ||
implementation |
объект | да |
skillContract.retryPolicy¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
maxAttempts |
integer |
||
backoffSeconds |
integer |
skillContract.costModel¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
unit |
string |
да | |
estimate |
number |
skillContract.implementation¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
protocol |
http | local | mcp |
да | |
endpoint |
string |
http: address; allows an environment ${VARIABLE} | |
entrypoint |
string |
local: module:function; mcp: tool name | |
auth |
object |
audience or secretRef; no secrets |
Правило вывода работы (kind: WorkRule)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
workRuleSpec¶
Work rule: exactly the POST /rules body without key. The core checks the grammar of conditions and templates (normalize_rule_spec). workspaceId is installation topology: only via a ${VARIABLE}, set on creation and not changed afterwards.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
description |
string |
||
workspaceId |
string |
||
trigger |
объект | да | |
condition |
object | boolean |
||
interpretation |
объект | ||
action |
объект | да | |
identity |
объект | On whose behalf the rule acts: an agent description of kind service or agent; without identity, with the authority of whoever applied the rule | |
status |
enabled | disabled |
enabled by default |
workRuleSpec.trigger¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
observation | event | schedule |
да | |
agent |
string |
Only with observation: the observation matches when its author is the principal of this agent. An agent key or an installation ${VARIABLE} — a neutral package does not know the provider's agent |
workRuleSpec.interpretation¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skill |
string |
да | name@version |
inputs |
object |
workRuleSpec.action¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
ensure_work | update_work | cancel_work | complete_work | request_decision |
да | |
taskType |
string |
Type key or a {{item.…}} template; a template only with non-empty taskTypes | |
taskTypes |
array of typeKey |
Allowed types for a templated taskType; with complete_work and cancel_work with target: task — the types the rule may close | |
target |
dedup | task |
Only with complete_work and cancel_work: dedup — the work under the rule's key (the default), task — the task the triggering observation is bound to; needs taskTypes and an author filter trigger.agent or trigger.actorId | |
fields |
объект |
workRuleSpec.action.fields¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
workspaceId |
string |
Template of the workspace id of the created work; defaults to the rule's workspace | |
relations |
объект | Relations of the created work: spawnedBy is a task id template; dependsOn are deduplication keys of this rule's work (from the same evaluation or created earlier) |
workRuleSpec.action.fields.relations¶
Relations of the created work: spawnedBy is a task id template; dependsOn are deduplication keys of this rule's work (from the same evaluation or created earlier)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
spawnedBy |
string |
||
dependsOn |
string или array of string |
workRuleSpec.identity¶
On whose behalf the rule acts: an agent description of kind service or agent; without identity, with the authority of whoever applied the rule
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
agent |
slug |
да |
Агент (kind: Agent)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
agentSpec¶
Agent: who it is, what work it takes, with what and how it executes, where it is placed. Every change is a new immutable revision in the core; a run remembers its revision.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
displayName |
displayName |
да | |
description |
string |
||
identity |
объект | да | Identity: the core and IAM principal and its binding to permissions, created and maintained by the platform. Permissions are no broader than those of whoever applies the description. |
work |
объект | What work the agent takes from the queue | |
executor |
объект | What the agent executes work with. The kind is data (a string for the core); the default image is chosen by the node, an image from the description only from the node's list. | |
workingCopy |
object |
Task working copy. Interpreted by the executor daemon, the core stores the object as data; the shape is set by the executor kind: shapes per kind are in agentWorkingCopies: for the code executor kind, one repository or a catalog with a task field, for other kinds, one repository | |
skills |
объект | Which skills the agent executes itself and where they may connect | |
placement |
= none или объект — по условию |
Where and how many: none means identity only, without a process (service account) | |
state |
running | stopped |
По умолчанию running. |
|
connections |
array of connectionKey |
Keys of the tenant's connections whose access material the agent may read. Whether such a connection exists is not checked on publish; a non-empty list needs connections.manage of whoever applies it |
Условия:
| Условие | Следствие |
|---|---|
не (placement = none) |
обязательно executor |
executor.kind = claude-code |
workingCopy: agentWorkingCopies/claude-code |
| иначе | workingCopy: agentWorkingCopies/single |
agentSpec.identity¶
Identity: the core and IAM principal and its binding to permissions, created and maintained by the platform. Permissions are no broader than those of whoever applies the description.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
agent | service |
да | |
roles |
array of slug |
Tenant roles (from packages) | |
permissions |
array of permission |
||
capabilities |
array of string |
||
iam |
объект | IAM part of the account: audiences and the scope ceiling. Data for whoever issues the account (bootstrap, executor node controller); the core stores it but does not interpret it. |
agentSpec.identity.iam¶
IAM part of the account: audiences and the scope ceiling. Data for whoever issues the account (bootstrap, executor node controller); the core stores it but does not interpret it.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
audiences |
array of string |
да | |
scopeCeiling |
array of string |
да | Scope <audience>:<action>, segments may be dotted (control-plane:read, iam:identities.link) |
agentSpec.work¶
What work the agent takes from the queue
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
workspace |
envOrUuid |
||
project |
envOrUuid |
||
includeSubprojects |
boolean |
По умолчанию false. |
|
onlyAssigned |
boolean |
Only work assigned to it. По умолчанию true. |
|
taskTypes |
array of typeKey |
Empty means any types |
agentSpec.executor¶
What the agent executes work with. The kind is data (a string for the core); the default image is chosen by the node, an image from the description only from the node's list.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
claude-code | codex | skills | git-connector | observer |
да | |
params |
object |
||
image |
string |
Executor image: [registry[:port]/]path:tag, …@sha256:<64 hex> or …:tag@sha256:<64 hex>; a tag or digest is required. The node runs it only if the image is in the node's executors.<kind>.images list, otherwise image_not_allowed; without the field, the kind's default image | |
instructions |
string |
Instructions for the executor: a layer after the platform, project and task type instructions |
Условия:
| Условие | Следствие |
|---|---|
kind = claude-code |
params: agentExecutors/claude-code |
kind = codex |
params: agentExecutors/codex |
kind = skills |
params: agentExecutors/skills |
kind = git-connector |
обязательно params; params: agentExecutors/git-connector |
kind = observer |
обязательно params; params: agentExecutors/observer |
agentSpec.skills¶
Which skills the agent executes itself and where they may connect
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
protocols |
array of local | http | mcp |
||
local |
array of string |
Allowed entrypoints or packages | |
httpOrigins |
array of string |
||
mcpOrigins |
array of string |
||
audiences |
array of string |
IAM audiences the skills get a token for | |
concurrency |
integer |
||
invoke |
array of string |
Skill versions the agent invokes through the core (name@version) rather than executing itself; the registry assigns them to the agent's principal |
agentSpec.placement¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
requires |
array of nodeLabel |
Labels the node must have | |
secrets |
array of secretName |
Secrets the node must have: static ones (a file in the node's secrets directory) and issued ones, which the node issues and renews itself, e.g. an hourly forge-token from the forge app installation. Declared the same way, by name; the material is not written into the description | |
resources |
объект | ||
replicas |
integer |
По умолчанию 1. |
|
drainSeconds |
integer |
How long to wait for the current run before switching to a new revision. По умолчанию 14400. |
agentSpec.placement.resources¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cpus |
integer |
Whole CPUs: the core canonical hash of a revision rejects fractional numbers (non_canonical_value) | |
memoryMb |
integer |
permission¶
Control Plane permission, e.g. tasks.claim
Значение: string.
agentExecutors¶
Executor kind parameters; the core stores them without interpreting, this schema and the adapter check them
Набор определений: agentExecutors/claude-code, agentExecutors/codex, agentExecutors/skills, agentExecutors/git-connector, agentExecutors/observer.
agentExecutors/claude-code¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
model |
string |
||
permissionMode |
default | acceptEdits | plan | bypassPermissions |
По умолчанию acceptEdits. |
|
timeoutSeconds |
integer |
По умолчанию 3600. |
|
resume |
boolean |
По умолчанию true. |
|
tools |
объект | Narrowing of the agent's tools; the ban on authoritative Control Plane commands is not lifted |
agentExecutors/claude-code.tools¶
Narrowing of the agent's tools; the ban on authoritative Control Plane commands is not lifted
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
allow |
array of string |
||
deny |
array of string |
agentExecutors/codex¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
model |
string |
||
sandbox |
read-only | workspace-write | danger-full-access |
По умолчанию workspace-write. |
|
timeoutSeconds |
integer |
По умолчанию 3600. |
|
resume |
boolean |
По умолчанию true. |
|
credentialClass |
subscription | api_key |
Whose credential is consumed |
agentExecutors/skills¶
Skills-only executor: what to execute is the agent's skills section; params are non-secret skill settings
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
env |
map → string |
Non-secret skill settings (portal address, limits): environment variables of every local skill call on the skills host. No secrets here: names like TOKEN, SECRET, PASSWORD, API_KEY are forbidden, secrets come as node secret files (placement.secrets); host names (CONTROL_PLANE_, IAM_, PATH…) are forbidden too |
agentExecutors/git-connector¶
Git observation source: what to observe and which observations to produce. The cursor lives in the replica volume, observations go to POST /observations of the agent's workspace.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
repositories |
array of объект | да | |
observe |
array of commits | adrRegistry | ciRuns |
commits — repo.commit_observed; adrRegistry — adr.registry_observed; ciRuns — ci.run_observed. По умолчанию ["commits"]. |
|
intervalSeconds |
integer |
По умолчанию 300. |
|
knowledgeSnapshots |
boolean |
Send contract snapshots to memory via POST /knowledge/snapshots. По умолчанию true. |
|
registryRepository |
string |
Repository to read the ADR registry from (a name from repositories) | |
ciRepository |
string |
owner/repo of CI runs | |
ciBranch |
string |
По умолчанию main. |
agentExecutors/git-connector.repositories[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name |
string |
да | Name in observations (payload.data.repo, source git:<name>) |
url |
string |
да | |
branch |
string |
По умолчанию main. |
agentExecutors/observer¶
Integration package observation source (connector = observer + skills): a long-lived process that polls an external system in a loop and writes observations to the agent's workspace (POST /observations). What to poll is config, interpreted by the integration code; which code is entrypoint, which the observer kind image on the node must contain. The cursor lives in the replica volume, secrets come only as node secret files (placement.secrets).
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
entrypoint |
string |
да | Integration observer "module:function"; the image process checks that it executes exactly this one |
intervalSeconds |
integer |
По умолчанию 900. |
|
config |
object |
Integration parameters (filters, addresses, limits) are package data. No secrets here: keys like token, secret, *password are forbidden |
nodeLabel¶
Node label: name or name=value
Значение: string.
secretName¶
Secret name on the node; the value is not written into the description
Значение: string.
agentWorkingCopies¶
Shapes of the workingCopy section per executor kind: the core stores the section as data, this schema and the executor daemon check it
Набор определений: agentWorkingCopies/single, agentWorkingCopies/catalog, agentWorkingCopies/catalogEntry, agentWorkingCopies/claude-code.
agentWorkingCopies/claude-code¶
One repository (legacy shape) or a catalog: the presence of repositories or repositoryField selects the catalog
Значение: agentWorkingCopies/catalog или agentWorkingCopies/single — по условию.
Условия:
| Условие | Следствие |
|---|---|
задано repositories или задано repositoryField |
agentWorkingCopies/catalog |
| иначе | agentWorkingCopies/single |
agentWorkingCopies/catalog¶
Repository catalog: the only source of clone, neighbour and publication addresses. The task repository is a catalog key or an alias in the task field repositoryField; an address from the task is not accepted, there is no default. Keys and aliases are matched case-insensitively (casefold): this is how the executor daemon and tasks.check@1 resolve the task key. package-sdk check verifies that superproject refers to a catalog key and that keys and aliases (casefold), addresses (normalized) and directories are unambiguous across entries
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
repositoryField |
string |
да | Name of the task's customFields field holding the repository key (repositoryKey for coding-task) |
superproject |
любое | Catalog key whose submodules pin the neighbours' revisions | |
publish |
boolean |
Publish the task branch to the forge; a catalog entry may override it. По умолчанию true. |
|
checks |
boolean |
Run the checks of .agents/runner.yaml of the base revision before hand-in; the report goes to metadata.checks of the commit artifact. По умолчанию false. |
|
repositories |
map → agentWorkingCopies/catalogEntry |
да |
repositoryKey¶
Canonical repository key in the working copy catalog: ASCII, as in the task's customFields. Keys and aliases are matched case-insensitively (casefold): this is how the executor daemon and tasks.check@1 resolve the task key
Значение: string.
agentWorkingCopies/catalogEntry¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
url |
string |
да | Clone address: an installation ${VARIABLE} or https without credentials, query and fragment (environment topology is not written into the package). Host: DNS labels, port 1–65535; path segments: ASCII without dot segments or a leading dot, since the mirror name is taken from the last segment. package-sdk check looks for matching addresses of two entries after normalization (no trailing /, no .git, case-insensitive) |
baseRef |
string |
Task base branch, a git ref name: no leading - / ., no spaces or control characters, no .., @{, //, ~^:?*[\ and no trailing / . .lock | |
directory |
любое | Directory in the working copy: a name (flat layout) or a path of several segments (services/control-plane). It does not repeat the directory or the key of another entry, and is neither inside the directory of another entry nor contains it — checked by package-sdk check | |
publish |
boolean |
false means a neighbour the agent does not write to; defaults to the catalog's publish | |
aliases |
array of repositoryAlias |
Former names accepted instead of the key; matching is case-insensitive (casefold), so aliases repeat neither their own nor other keys and aliases, even in another case |
workingCopyPath¶
A directory in the working copy relative to its root: one name (flat layout, control-plane) or a path of several segments joined by / (services/control-plane, sdk/platform-auth-sdk). A segment starts with a lowercase Latin letter or a digit, so . and .. do not pass; an absolute path, an empty segment (//, a trailing /) and a backslash are rejected
Значение: string.
repositoryAlias¶
Former repository name (map key, repository row of the task document, connector deduplication key): Latin and Cyrillic letters, digits, . _ -. Matched against the task key case-insensitively (casefold)
Значение: string.
agentWorkingCopies/single¶
Legacy shape: one repository, neighbours and superproject by address
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
repository |
string |
да | |
directory |
любое | Directory of the repository in the working copy: a name (flat layout) or a path of several segments | |
baseRef |
string |
||
neighbours |
map → string |
Neighbour repositories at revisions pinned by the superproject. The key is the neighbour's directory in the working copy: a name or a path of several segments | |
superproject |
string |
||
publish |
boolean |
Publish the task branch to the forge. По умолчанию true. |
|
checks |
boolean |
Run the checks of .agents/runner.yaml of the base revision before hand-in; the report goes to metadata.checks of the commit artifact. По умолчанию false. |
|
review |
объект | Deprecated: review is declared by the task type as acceptance criteria; the section is removed together with the daemon's auto-review |
agentWorkingCopies/single.review¶
Deprecated: review is declared by the task type as acceptance criteria; the section is removed together with the daemon's auto-review
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
mode |
human | agent | none |
||
taskType |
typeKey |
||
taskTypes |
array of typeKey |
Task types that get a review | |
reviewer |
envOrUuid |
||
base |
string |
Правило уведомления (kind: NotificationRule)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
notificationRuleSpec¶
Notification rule: core event and condition → recipient → text and buttons. Stored and executed by the notification service; templates are {{payload.…}}, {{event.…}}, {{task.…}} substitution without logic.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
description |
string |
||
on |
объект | да | |
recipient |
объект | да | |
notification |
объект | да | |
dedupKeyTemplate |
string |
||
close |
объект | Close the notification's buttons with the same deduplication key when the event arrives | |
status |
enabled | disabled |
enabled by default |
notificationRuleSpec.on¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | Core catalog event type or a prefix.* |
when |
object | boolean |
Condition in the core rule grammar over payload, event and task |
notificationRuleSpec.recipient¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
assigned | role | taskOwner | taskAssignee | principal |
да | |
ref |
string |
Path to a principal or role in the event (assigned, role) or an id/variable (principal) | |
workspace |
string |
Path to the workspace for role; defaults to the event's workspace | |
fallback |
taskOwner | taskAssignee | none |
По умолчанию none. |
notificationRuleSpec.notification¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | Notification type: recipient settings and mandatory rules work by it |
title |
string |
да | |
body |
string |
||
links |
array of объект | ||
actions |
array of approvalDecide |
approvalDecide: Approve/Reject buttons for the decision from payload.approvalId |
notificationRuleSpec.notification.links[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
label |
string |
да | |
url |
string |
да |
notificationRuleSpec.close¶
Close the notification's buttons with the same deduplication key when the event arrives
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
on |
array of string |
да | |
outcome |
string |
Outcome template shown instead of the buttons |
Процесс (kind: Process)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
processSpec¶
Process: a case with stages and execution blocks, data by schema, CEL expressions, projection into memory. Executed by the core
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
version |
integer |
да | Definition version: a published version is immutable |
displayName |
displayName |
да | |
description |
string |
||
workspaceId |
string |
||
identity |
объект | On whose behalf the process acts: an agent description of kind service or agent | |
owner |
assignChain |
Process owner: tasks about the process are addressed to them (divergence from the regulation, instance errors). Optional; the package check warns if it is missing | |
calendar |
typeKey |
Default calendar for cal.* | |
due |
processDue |
Due of the whole process from the instance start | |
data |
jsonSchema |
да | JSON Schema of the instance data; package-sdk expands |
start |
объект | да | |
correlate |
array of объект | ||
stages |
array of processStage |
да | |
onEvent |
array of объект | ||
timers |
processTimers |
||
decisions |
array of decisionTable |
||
governedBy |
governedBy |
||
memory |
memoryProjection |
||
retrospective |
объект | Review of a closed case: the agent proposes lessons, a human confirms | |
migrations |
array of объект |
processSpec.identity¶
On whose behalf the process acts: an agent description of kind service or agent
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
agent |
slug |
да |
processSpec.start¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
on |
processTrigger |
да | |
key |
cel |
да | Instance key: a repeated event with the same key is a correlate, not a new instance |
set |
celMap |
processSpec.correlate[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
on |
processTrigger |
да | |
key |
cel |
да | |
set |
celMap |
||
do |
blocks |
processSpec.onEvent[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
on |
processTrigger |
да | |
do |
blocks |
да |
processSpec.retrospective¶
Review of a closed case: the agent proposes lessons, a human confirms
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skill |
string |
По умолчанию process.retrospective@1. |
|
taskType |
typeKey |
да | |
assign |
assignChain |
да | |
appliesTo |
array of string |
Entity kinds lessons are attached to | |
when |
cel |
processSpec.migrations[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
from |
integer |
да | |
to |
integer |
да | |
policy |
pin | migrate |
да | |
map |
map → processElementId |
assignChain¶
Candidates in order: the first resolvable one is taken
Значение: array of assignee.
assignee¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
principal |
envOrUuid |
||
role |
slug |
||
agent |
slug |
||
expr |
cel |
CEL → principal id, agent:<key> or role:<slug> |
Ровно одно из: principal, role, agent, expr.
cel¶
CEL expression in the taimen/1 profile: variables data, event, step, task, instance; cal.* functions; no current time. The core checks types and the cost limit
Значение: string.
processDue¶
Due (SLA) of a step or process: an ISO 8601 duration, {at}, a point in time or a duration from data, or exactly one of duration, workdays, workhours with optional calendar and warnBefore
Значение: durationOrCel или объект {duration, workdays, workhours, calendar, warnBefore}.
processDue (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
duration |
duration |
||
workdays |
workdayAmount |
||
workhours |
workhourAmount |
||
calendar |
typeKey |
Calendar of the working units; defaults to the process's spec.calendar | |
warnBefore |
workingSpan |
Warning threshold before the due; without it there is no warning |
Ровно одно из: duration, workdays, workhours.
durationOrCel¶
ISO 8601 duration or a CEL expression yielding a point in time (timestamp) or a duration
Значение: duration или объект {at}.
durationOrCel (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
at |
cel |
да |
workdayAmount¶
Значение: workdayCount или workingAmountExpr.
workdayCount¶
Workdays by the calendar: the same time of day n workdays later (cal.addWorkdays)
Значение: integer.
workingAmountExpr¶
Number of work units as a CEL expression: a non-negative integer, evaluated once on entering the step (settings.* are the package settings); after that the due date is computed as from a number
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
expr |
cel |
да |
workhourAmount¶
Значение: workhourCount или workingAmountExpr.
workhourCount¶
Working-time hours by a calendar with working hours (cal.addWorkingTime)
Значение: number.
workingSpan¶
Interval: an ISO 8601 duration (astronomical time), {workdays} or {workhours} by the due calendar
Значение: duration или объект {workdays} или объект {workhours}.
workingSpan (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
workdays |
workdayAmount |
да |
workingSpan (3)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
workhours |
workhourAmount |
да |
processTrigger¶
Event source: a core journal event or an observation. where is a CEL filter over event
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
event |
string |
||
observation |
string |
||
source |
string |
||
where |
cel |
Ровно одно из: event, observation.
celMap¶
Path in the instance data → CEL expression
Значение: map → cel.
blocks¶
Sequence of steps (do block)
Значение: array of processStep.
processStep¶
Process step: exactly one kind (human, approve, call, decide, recall, remember, listen, wait, set, raise, compensate, fork, try, do, suspend, resume, complete) plus common fields
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
displayName |
displayName |
||
when |
cel |
Guard: the step runs only if it is true | |
input |
объект | ||
output |
объект | Writing the step result (step.result) into the instance data | |
export |
объект | ||
governedBy |
governedBy |
||
onCompensate |
blocks |
Compensation of a completed step: runs on compensate in reverse order | |
human |
объект | ||
approve |
объект | ||
call |
объект | ||
decide |
объект | ||
recall |
объект | Memory query through the core; the answer is a journal event (deterministic replay) | |
remember |
объект | Write to memory as a core observation from the process identity, with a reference to the case | |
listen |
объект | Waiting for the first of the events (deferred choice); timeout is a timer | |
wait |
durationOrCel |
Pause: a duration or a point in time; wait has no due, the pause itself sets the time | |
set |
celMap |
||
raise |
processError |
||
compensate |
= all или array of processElementId |
Run onCompensate of completed steps in reverse order | |
fork |
объект | ||
try |
объект | ||
do |
blocks |
||
suspend |
объект | ||
resume |
объект | ||
complete |
объект |
Ровно одно из: human, approve, call, decide, recall, remember, listen, wait, set, raise, compensate, fork, try, do, suspend, resume, complete.
processStep.input¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
from |
cel |
processStep.output¶
Writing the step result (step.result) into the instance data
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
as |
celMap |
processStep.export¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
as |
celMap |
processStep.human¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
taskType |
typeKey |
да | |
title |
cel |
||
customFields |
map → cel |
Prefill of the created task's fields with case data: a field of the type's fieldSchema → CEL; checked against fieldSchema on publication and on task creation, null leaves the field to the human | |
form |
processForm |
||
assign |
assignChain |
да | |
due |
processDue |
||
escalations |
array of escalation |
||
context |
stepContext |
processStep.approve¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
taskType |
typeKey |
||
approvers |
assignChain |
да | |
mode |
parallel | sequential |
По умолчанию parallel. |
|
quorum |
all | any или объект {atLeast} или объект {percent} |
да | |
earlyDecision |
boolean |
По умолчанию true. |
|
separationOfDuties |
cel |
CEL → list of principals who may not vote; the core checks it at decision time | |
due |
processDue |
||
onDue |
approve | reject | escalate |
||
escalations |
array of escalation |
||
context |
stepContext |
processStep.approve.quorum (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
atLeast |
integer |
да |
processStep.approve.quorum (3)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
percent |
number |
да |
processStep.call¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skill |
string |
||
agent |
slug |
||
process |
typeKey |
||
input |
celMap |
||
timeout |
durationOrCel |
||
due |
processDue |
||
context |
stepContext |
Ровно одно из: skill, agent, process.
processStep.decide¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
table |
processElementId |
да | |
input |
celMap |
processStep.recall¶
Memory query through the core; the answer is a journal event (deterministic replay)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
anchors |
array of memoryAnchor |
да | |
traverse |
memoryTraverse |
||
query |
cel |
Semantic expansion text | |
kinds |
array of string |
||
where |
memoryWhere |
||
limit |
integer |
||
timeout |
duration |
||
due |
processDue |
||
onTimeout |
blocks |
processStep.remember¶
Write to memory as a core observation from the process identity, with a reference to the case
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
entity |
объект | ||
facts |
celMap |
Case fact name → value |
Ровно одно из: facts, entity.
processStep.remember.entity¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
string |
да | |
key |
cel |
да | |
name |
cel |
||
text |
cel |
||
links |
array of объект |
processStep.remember.entity.links[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
rel |
string |
да | |
kind |
string |
да | |
key |
cel |
да |
processStep.listen¶
Waiting for the first of the events (deferred choice); timeout is a timer
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
any |
array of объект | да | |
timeout |
durationOrCel |
||
due |
processDue |
||
onTimeout |
blocks |
processStep.listen.any[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
on |
processTrigger |
да | |
do |
blocks |
processStep.fork¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
mode |
all | compete |
По умолчанию all. |
|
branches |
array of объект | да |
processStep.fork.branches[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
do |
blocks |
да |
processStep.try¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
do |
blocks |
да | |
retry |
объект | ||
catch |
array of объект |
processStep.try.retry¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
limit |
integer |
да | |
delay |
duration |
||
backoff |
constant | exponential |
||
maxDelay |
duration |
||
on |
array of string |
Error types to retry; all by default |
processStep.try.catch[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
errors |
объект | ||
as |
string |
||
do |
blocks |
да |
processStep.try.catch[].errors¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
||
status |
integer |
processStep.suspend¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
reason |
cel |
processStep.resume¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
reason |
cel |
processStep.complete¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
outcome |
string |
да |
processElementId¶
Stable process element id: the schema layout, migration maps, the journal and the memory graph refer to it. Renaming only via the migrations map
Значение: string.
governedBy¶
Knowledge base regulations the element is subject to: the natural key of the memory document and, if needed, a clause
Значение: array of объект.
governedBy[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
document |
string |
да | |
section |
string |
processForm¶
Step form: JSON Schema of the data and JSON Forms uischema of the view
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
schema |
jsonSchema |
да | |
uischema |
object |
escalation¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
after |
= due или durationOrCel |
да | due means at the due moment; a duration means after the due |
action |
remind | reassign | notify | raise |
да | |
to |
assignChain |
||
error |
processError |
processError¶
Error in RFC 7807 form
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | |
status |
integer |
||
detail |
cel |
stepContext¶
Context profile of the step executor from memory: explicit relations first, semantic expansion marked inferred
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
anchors |
array of memoryAnchor |
да | |
traverse |
memoryTraverse |
||
semantic |
boolean |
Semantic expansion (inferred); true by default | |
budgetTokens |
integer |
memoryAnchor¶
Graph traversal anchor: the instance's case node or an entity by natural key (CEL over data)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
case |
= true |
||
kind |
string |
||
key |
cel |
||
via |
string |
Ровно одно из: case, key + kind.
memoryTraverse¶
Traversal steps from the anchors, the same shape as traverse in contextSchema
Значение: array of объект.
memoryTraverse[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
relation |
string |
да | |
direction |
in | out | both |
||
depth |
integer |
||
limit |
integer |
||
from |
anchors | previous |
memoryWhere¶
Filters on node attributes: applied to result nodes and to candidate anchors of semantic expansion; conditions are joined with AND
Значение: array of объект.
memoryWhere[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
attr |
string |
да | Node attribute name (flat), e.g. okpd2 or validUntil; a list attribute satisfies the condition if any of its elements does |
op |
eq | in | prefix | lte | gte | exists |
да | prefix compares codes by dot-separated segments: 62.01 matches 62.01.11 but not 62.011; lte/gte are RFC 3339 dates or numbers |
value |
cel или number | boolean или array of cel |
CEL expression over the instance data (a string literal goes in CEL quotes: "'62.01'"); for in, a CEL list or a list of expressions; for exists, true or false |
Условия:
| Условие | Следствие |
|---|---|
op ≠ exists |
обязательно value |
processStage¶
Case stage (CMMN): entry and exit by guards, milestones, required and optional work
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
displayName |
displayName |
||
entry |
cel |
Entry guard; stage.<id>.completed, milestone.<id> and data are available in the expression | |
exit |
cel |
||
repeatable |
boolean |
||
governedBy |
governedBy |
||
steps |
blocks |
да | |
discretionary |
array of processStep |
Work a human adds at their discretion | |
milestones |
array of объект | ||
timers |
processTimers |
processStage.milestones[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
when |
cel |
да |
processTimers¶
Boundary timers: fire while the stage (process) is open; at from data is recalculated when the data changes
Значение: array of объект.
processTimers[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
at |
durationOrCel |
да | |
interrupting |
boolean |
По умолчанию false. |
|
do |
blocks |
да |
decisionTable¶
Decision table (DMN in spirit). Condition cell: '-' (any), a literal, a list 'a,b', a range '[a..b)'
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
displayName |
displayName |
||
hitPolicy |
first | unique | collect |
да | |
governedBy |
governedBy |
||
inputs |
array of объект | да | |
outputs |
array of объект | да | |
rules |
array of объект | да |
decisionTable.inputs[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
expr |
cel |
да | |
type |
string | number | boolean | date | timestamp |
decisionTable.outputs[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
processElementId |
да | |
type |
string | number | boolean | date | duration | object | array |
decisionTable.rules[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
when |
map → string | number | boolean |
да | |
then |
object |
да | |
note |
string |
||
governedBy |
governedBy |
memoryProjection¶
Projection of the case into the memory graph: delivered by events, only declared fields go into the graph
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
case |
объект | да | |
facts |
celMap |
Case fact name → value; a change closes the previous fact with a validity end | |
entities |
array of объект | ||
documents |
объект |
memoryProjection.case¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
string |
По умолчанию case. |
|
key |
cel |
да | |
title |
cel |
memoryProjection.entities[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
string |
да | |
key |
cel |
да | |
name |
cel |
||
rel |
string |
да | |
when |
cel |
||
many |
boolean |
key yields a list: one entity per element |
memoryProjection.documents¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
artifacts |
array of typeKey |
Календарь (kind: Calendar)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
calendarSpec¶
Business calendar: default days off, holidays and transfers by year
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
displayName |
displayName |
да | |
timezone |
string |
да | |
weekend |
array of integer |
ISO weekdays: 1 is Monday. По умолчанию [6, 7]. |
|
workingHours |
объект | Working hours on the calendar's working days, in the calendar's local time. Without the field the calendar knows only working days | |
years |
array of объект | да |
calendarSpec.workingHours¶
Working hours on the calendar's working days, in the calendar's local time. Without the field the calendar knows only working days
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
intervals |
workingIntervals |
да | Intervals of a regular working day |
weekdays |
map → workingIntervals |
Intervals per ISO weekday (1 is Monday) instead of intervals; [] means no working hours | |
shortDayReduction |
duration |
How much shorter a shortened day (shortDays) is: subtracted from the end of the last interval |
calendarSpec.years[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
year |
integer |
да | |
provisional |
boolean |
The year is not approved yet: cal.* results are marked as preliminary | |
source |
string |
||
holidays |
array of string (date) |
||
workdays |
array of string (date) |
Transferred working days that fall on days off | |
shortDays |
array of string (date) |
workingIntervals¶
Working-time intervals of the day, in order and non-overlapping, from before to (the core checks the order); 24:00 is the end of the day
Значение: array of объект.
workingIntervals[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
from |
string |
да | |
to |
string |
да |
Онтология (kind: KnowledgePack)¶
Тело онтологии описывает отдельный файл схемы knowledge-pack.schema.json; в пакете к нему добавляется целая версия version.
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json, sdk/package-sdk/schema/v1/knowledge-pack.schema.json.
KnowledgePack.spec¶
Включает knowledge-pack.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
version |
integer |
Ontology version in the package, an integer: an inclusion refers to it as name@version, an edit is a new version |
knowledge-pack¶
Форма пакета видов и связей базы знаний. Пакет регистрируется через ядро (POST /api/v1/knowledge/packs) и включается для дерева workspace. memory-service разбирает name, version, scope, namespace, kinds (kind, kindAliases, aliases, naturalKey, idPatterns, attributes, searchable) и relations; остальные поля — данные загрузчиков и генератора шаблонов импорта, память их пропускает.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name |
string |
да | Имя пакета без префикса. Ссылка на пакет арендатора в настройке namespace — tenant:<имя>@<версия> |
version |
string | integer |
да | Версия пакета; шаблоны видов версионируются ею |
scope |
common | tenant |
common — общий пакет, регистрирует администратор платформы; tenant — пакет арендатора по праву knowledge.packs.manage: виден и включается только в namespace-владельце и под ним, имена пакета, видов и связей не совпадают с общими. По умолчанию common. |
|
namespace |
string |
Namespace-владелец пакета арендатора (scope: tenant); при регистрации через ядро его подставляет ядро по workspace | |
description |
string |
||
extends |
array of string |
Пакеты, на виды которых ссылаются связи и профили этого пакета (например company@1). Базовый пакет не меняется | |
kinds |
array of knowledge-pack/kind |
да | |
relations |
array of knowledge-pack/relation |
||
profiles |
array of knowledge-pack/profile |
Профили атрибутов видов, в том числе видов других пакетов: так пакет описывает атрибуты чужого вида, не меняя и не переобъявляя его (credential с type: sro_membership у расширения отрасли, legal_entity пакета default у company). Проверяют загрузчики и генератор шаблонов | |
expiry |
array of knowledge-pack/expiry |
Кому и за сколько дней ставить задачу об истечении validUntil вида (правило knowledge-expiry). Без записи — роль владельца базы знаний и 30 дней |
knowledge-pack/kind¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
knowledge-pack/name |
да | |
title |
string |
Название вида для людей — заголовок шаблона и раздела консоли | |
description |
string |
||
kindAliases |
array of knowledge-pack/name |
||
aliases |
array of string |
||
naturalKey |
string или object |
Форма естественного ключа: шаблон с плейсхолдерами ("offering:<source>:<id>") или JSON Schema строки | |
idPatterns |
array of string |
||
attributes |
knowledge-pack/attributes |
||
searchable |
объект | Вид находится поиском по смыслу: сверка индексирует эмбеддинг из title сущности и значений перечисленных атрибутов; каждый атрибут объявлен в attributes.properties |
knowledge-pack/kind.searchable¶
Вид находится поиском по смыслу: сверка индексирует эмбеддинг из title сущности и значений перечисленных атрибутов; каждый атрибут объявлен в attributes.properties
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
fields |
array of string |
да |
knowledge-pack/name¶
Значение: string.
knowledge-pack/attributes¶
JSON Schema атрибутов вида (draft 2020-12). title и description свойства — заголовок и подсказка колонки шаблона; type, format, enum — проверка; required — обязательность. Сроки действия — по соглашению validFrom и validUntil (format: date). Свойство с персональными данными физического лица допустимо только с x-personal-data: allowed — такие значения не попадают в промпты ИИ
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
= object |
||
properties |
объект |
knowledge-pack/attributes.properties¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
validFrom |
knowledge-pack/dateProperty |
||
validUntil |
knowledge-pack/dateProperty |
knowledge-pack/dateProperty¶
Соглашение сроков: validFrom и validUntil — день ISO 8601
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
= string |
да | |
format |
= date |
да |
knowledge-pack/relation¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
relation |
knowledge-pack/name |
да | |
title |
string |
Заголовок колонки связи в шаблоне | |
fromKinds |
array of knowledge-pack/name |
||
toKinds |
array of knowledge-pack/name |
||
temporal |
boolean |
По умолчанию true. |
|
cardinality |
one | many |
По умолчанию many. |
knowledge-pack/profile¶
Атрибуты вида этого или другого пакета. С when — у сущностей, где атрибут равен значению (credential с type: sro_membership); без when — у всех сущностей вида (атрибуты legal_entity пакета default)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
knowledge-pack/name |
да | |
when |
объект | ||
title |
string |
||
attributes |
knowledge-pack/attributes |
да |
knowledge-pack/profile.when¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
attr |
string |
да | |
equals |
string | number | boolean |
да |
knowledge-pack/expiry¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
knowledge-pack/name |
да | |
role |
string |
Роль, которой ставится задача | |
leadDays |
integer |
Общие типы¶
Определения, на которые ссылаются несколько видов.
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/object.schema.json.
connectionKey¶
Key of a connection type or of a connection
Значение: string.
displayName¶
Значение: string.
duration¶
ISO 8601 duration, e.g. P3D, PT4H
Значение: string.
envOrUuid¶
UUID or an installation ${VARIABLE} (environment topology is not written into the package)
Значение: string.
jsonSchema¶
Document JSON Schema (draft 2020-12). The core rejects remote $ref.
Значение: object.
lifecycle¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
statuses |
array of объект | да | |
transitions |
array of объект | ||
initialStatus |
statusKey |
lifecycle.statuses[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
statusKey |
да | |
category |
string |
да | |
displayName |
string |
lifecycle.transitions[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
from |
statusKey |
да | |
to |
array of statusKey |
да |
mediaType¶
Lowercase media type; a / or type/* mask is allowed
Значение: string.
ruleKey¶
Rule key in the tenant
Значение: string.
slug¶
Значение: string.
statusKey¶
Значение: string.
typeKey¶
Type key: lowercase Latin letters, digits, _ and -
Значение: string.
Тест пакета (tests/*.test.yaml)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/test.schema.json.
test¶
File <name>.test.yaml in the package's tests/ directory. Run by the core (POST /packages:test) with the same engine as a live run, in a sandbox: tasks, approvals and timers are in memory, skills, agents and memory are stubs checked against the catalog schemas, time is virtual. No side effects.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
$schema |
string |
||
process |
string |
Package process key | |
version |
integer |
Defaults to the version in the package | |
name |
string |
да | |
description |
string |
||
subject |
process | rule | taskType |
What the test checks: a process (default), a work rule or a task type (gate outcomes, acceptance criteria, completion actions). По умолчанию process. |
|
rule |
string |
Package WorkRule key (subject: rule) | |
taskType |
string |
Package TaskType key (subject: taskType) | |
given |
object |
||
mocks |
объект | ||
steps |
array of object |
да | |
coverage |
объект |
Условия:
| Условие | Следствие |
|---|---|
не (subject ∈ rule, taskType) |
обязательно process; given: processGiven; steps: array of testStep |
subject = rule |
обязательно rule; given: ruleGiven; steps: array of ruleStep |
subject = taskType |
обязательно taskType; given: taskTypeGiven; steps: array of taskTypeStep |
test.mocks¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skills |
map → array of mockAnswer |
name@version → responses in call order (or by when); the output is checked against the skill schema from the catalog | |
agents |
map → array of mockAnswer |
||
recall |
array of mockAnswer |
Memory responses to recall steps; step is the step id, when is CEL over the query |
test.coverage¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
minimum |
number |
Coverage threshold of process elements by this test, % |
mockAnswer¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
step |
string |
||
when |
string |
CEL over the call input | |
output |
любое | ||
error |
объект | ||
timeout |
= true |
Ровно одно из: output, error, timeout.
mockAnswer.error¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | |
status |
integer |
||
detail |
string |
processGiven¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
clock |
string (date-time) |
Initial virtual time | |
data |
object |
Initial instance data (without a start event) | |
stage |
string |
Start with an open stage | |
fromInstance |
string |
Dry run on an environment only: state is copied from a live instance | |
calendar |
string |
Calendar key instead of the process calendar | |
settings |
settings |
||
principals |
map → array of string |
Role → fictitious test principals (for assignments and separation of duties) |
settings¶
Saved package settings values, as an administrator saves them: they replace the previously saved values, fields not given take their default from spec.settings of the manifest. The core checks them against the settings schema of the package
Значение: object.
testStep¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
settings |
settings |
Save new settings values in the middle of the scenario: computations after this step read them, decisions already taken keep the values they read | |
emit |
объект | ||
advance |
string |
Virtual time shift (ISO 8601, P3D) or up to a moment: until:<timer id> | |
complete |
объект | ||
approve |
объект | ||
expect |
объект |
Ровно одно из: emit, advance, complete, approve, expect, settings.
testStep.emit¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
event |
string |
||
observation |
string |
||
source |
string |
||
task |
string |
Only with observation: id of the process step whose latest task the observation is bound to (the task field of the core's observation) | |
by |
string |
Event author (actorId): a test principal or agent:<key> | |
payload |
object |
Ровно одно из: event, observation.
testStep.complete¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
step |
string |
да | |
by |
string |
test principal or agent:<key> | |
output |
object |
Form data or the agent's result; checked against the form schema | |
cancel |
= true |
testStep.approve¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
step |
string |
да | |
by |
string |
да | |
decision |
approve | reject |
да | |
expectRefused |
string |
Core rejection code, e.g. separation_of_duties_violation |
testStep.expect¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
stages |
map → open | completed | skipped | not_started |
||
milestones |
array of string |
||
tasks |
array of объект | ||
timers |
array of объект | ||
data |
object |
Path in data → expected value | |
sla |
map → ok | warning | breached | paused |
Due state: step id → state of its open attempt; the process key is the process due (spec.due) | |
events |
array of string |
process.* event types since the last expect | |
rules |
array of объект | Decisions of the package's rules with target: task since the last expect | |
memory |
объект | ||
outcome |
string |
||
status |
running | suspended | completed | failed | cancelled |
||
error |
string |
||
noSideEffects |
= true |
testStep.expect.tasks[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
step |
string |
||
status |
string |
||
assignee |
string |
||
due |
string |
||
customFields |
object |
Subset of task fields: the given ones are compared (human step prefill) |
testStep.expect.timers[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
string |
||
at |
string |
||
provisional |
boolean |
testStep.expect.rules[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
rule |
string |
||
action |
string |
||
step |
string |
||
result |
matched | not_matched | skipped | failed |
||
reason |
string |
testStep.expect.memory¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
recalled |
array of string |
||
remembered |
array of object |
ruleGiven¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
clock |
string (date-time) |
||
variables |
variables |
||
settings |
settings |
||
task |
объект | Task created before the input: an event without taskId in the payload is about it | |
schedule |
объект | Input: a firing of the rule's schedule (trigger.kind: schedule) | |
observation |
объект | ||
event |
объект |
Ровно одно из: observation, event, schedule.
ruleGiven.task¶
Task created before the input: an event without taskId in the payload is about it
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | Task type key of the package or tenant |
title |
string |
||
status |
string |
||
assignee |
string |
agent:<key> or a fictitious principal | |
customFields |
object |
ruleGiven.schedule¶
Input: a firing of the rule's schedule (trigger.kind: schedule)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
at |
string (date-time) |
Slot time; defaults to clock |
ruleGiven.observation¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
string |
да | |
data |
object |
||
content |
string |
||
source |
string |
||
externalRef |
object |
ruleGiven.event¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
да | |
payload |
object |
variables¶
Installation variable values for the test; the rest are defaults from the manifest
Значение: map → string.
ruleStep¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
expect |
объект | да |
ruleStep.expect¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
result |
string |
Outcome of the core's rule evaluation (like result of the rule.evaluated event) | |
ensureWork |
array of workExpectation |
||
invokeSkill |
array of skillExpectation |
||
noSideEffects |
= true |
workExpectation¶
Expected work: the given fields are compared, the rest are not checked
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string |
||
title |
string |
||
assignee |
string |
agent:<key>, a test role or a fictitious principal | |
customFields |
object |
||
relation |
object |
skillExpectation¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
skill |
string |
да | |
inputs |
object |
Subset of the call input |
taskTypeGiven¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
clock |
string (date-time) |
||
variables |
variables |
||
task |
объект | ||
artifacts |
array of объект | ||
principals |
map → array of string |
Role → fictitious test principals |
taskTypeGiven.task¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
title |
string |
||
status |
string |
||
assignee |
string |
||
customFields |
object |
taskTypeGiven.artifacts[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
string |
||
type |
string |
да | |
metadata |
object |
||
content |
string |
Content (text): an artifact with stored content, as after an upload | |
mediaType |
string |
Content type (text/markdown, application/json, …) |
taskTypeStep¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
approve |
объект | ||
verify |
объект | Outcome of the type's acceptance criterion | |
complete |
объект | ||
expect |
объект |
Ровно одно из: approve, verify, complete, expect.
taskTypeStep.approve¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
gate |
string |
По умолчанию default. |
|
decision |
approved | rejected |
да | |
by |
string |
||
comment |
string |
||
expectRefused |
string |
Core rejection code for the decider, e.g. not_eligible: the decider is not a holder of the gate role |
taskTypeStep.verify¶
Outcome of the type's acceptance criterion
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
check |
string |
да | |
result |
passed | failed |
да | |
output |
object |
taskTypeStep.complete¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
output |
object |
Completion output (completionSchema) |
taskTypeStep.expect¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
ensureWork |
array of workExpectation |
||
invokeSkill |
array of skillExpectation |
||
status |
объект | ||
comments |
array of string |
Substrings of comments left by outcomes | |
noSideEffects |
= true |
taskTypeStep.expect.status¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
string |
||
category |
backlog | active | blocked | terminal_success | terminal_cancelled |
Фиксация источников (packages.lock)¶
Файл пишет package-sdk lock; руками его не правят.
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/lock.schema.json.
lock¶
Файл packages.lock рядом с файлом установки. Пишет package-sdk lock; для каждого пакета — источник, коммит и хэш содержимого. План строится по lock: для источника git без записи — lock_required, при расхождении хэша — отказ.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
format |
= package-sdk.lock/v1 |
да | |
installation |
string |
Ключ установки, для которой снята фиксация | |
packages |
array of объект | да |
lock.packages[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
string |
да | |
version |
string |
да | |
source |
объект {path} или объект {git, ref, path} |
да | Откуда пакет: {path} — каталог относительно файла установки; {git, ref, path?} — тег git и подкаталог пакета в репозитории (то же имя path, что в установке) |
commit |
string |
Коммит источника git | |
contentHash |
string |
да | sha256 канонического набора файлов пакета: пути по порядку и их байты, без .layout/ (та же функция, что installHash записи связей) |
lock.packages[].source (1)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
path |
string |
да |
lock.packages[].source (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
git |
string |
да | |
ref |
string |
да | |
path |
string |
План установки (plan --out)¶
Документ пишет package-sdk plan --out; package-sdk apply --plan применяет его только без правок.
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/plan.schema.json.
plan¶
Один документ изменений всех видов установки. Пишет package-sdk plan --out; применяется только package-sdk apply --plan без правок: planHash — хэш документа без самого поля, правленый файл отвергается. Значения переменных в план не пишутся, только их хэш.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
format |
= package-sdk.plan/v1 |
да | |
server |
string |
да | Стенд: https, http — только localhost |
engines |
map → string |
Версии компонентов стенда на момент плана (из openapi.json) | |
createdAt |
string (date-time) |
да | |
installation |
string |
Ключ установки (Installation.key) | |
install |
string |
Файл установки относительно файла плана: apply --plan собирает по нему пакеты заново и сверяет lockHash и variablesHash | |
lockHash |
plan/hash |
||
variablesHash |
plan/hash |
||
overwriteConsole |
boolean |
plan --overwrite-console: перезаписать поля объектов ядра, которые человек правил в консоли после прошлого применения; без флага ядро их сохраняет. package-sdk plan пишет поле всегда, false по умолчанию; план прежнего формата без поля применяется как false. Входит в planHash; с ним же строится и применяется план ядра | |
sections |
array of plan/section |
да | |
planHash |
plan/hash |
да |
plan/hash¶
Значение: string.
plan/section¶
Значение: объект {kind, changes} или объект {kind, package, planHash, plan, workspaceId, replayLimit} или объект {kind, changes} или объект {kind, register, enable} или объект {kind, items}.
plan/section (1)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
= catalog |
да | |
changes |
array of plan/change |
да |
plan/section (2)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
= core |
да | |
package |
string |
да | |
planHash |
plan/hash |
да | |
plan |
object |
да | Ответ /packages:plan ядра как есть |
workspaceId |
string |
workspaceId запроса плана — с ним же идёт /packages:apply | |
replayLimit |
integer |
replayLimit запроса плана — с ним план ядра строится заново перед применением |
plan/section (3)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
= notification-rules |
да | |
changes |
array of plan/change |
да |
plan/section (4)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
= knowledge |
да | |
register |
array of plan/change |
||
enable |
array of объект |
plan/section (4).enable[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
workspace |
string |
да | |
packs |
array of string |
да | |
current |
array of string |
plan/section (5)¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
= retire |
да | |
items |
array of plan/change |
да |
plan/change¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
package |
string |
||
kind |
string |
да | |
key |
string |
да | |
operation |
create | version | patch | deprecate | enable | disable | register | retire | unchanged |
да | |
fields |
array of string |
Поля, которые меняются | |
expected |
любое | Что установщик ожидает увидеть на стенде перед записью (для plan_stale) |
Уточнение шаблона загрузки (templates/<вид>.yaml)¶
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/knowledge-template.schema.json.
knowledge-template¶
Необязательные данные пакета templates/<вид>.yaml. Шаблон строится генератором из JSON Schema вида; уточнение меняет только подачу: заголовки, порядок, подсказки, примеры и дополнительные запрещённые колонки. Колонок, которых нет в схеме вида, уточнение не добавляет.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
pack |
string |
да | Пакет онтологии и версия вида, например company@1 |
kind |
string |
да | |
title |
string |
Название листа и файла шаблона | |
instructions |
string |
Текст листа «Инструкция» перед сгенерированным описанием колонок | |
columns |
array of объект | Порядок колонок; не перечисленные идут после в порядке схемы | |
examples |
array of object |
Строки-примеры листа шаблона: field → значение | |
forbiddenColumns |
array of string |
Запрещённые заголовки сверх общего списка персональных данных (фио, фамилия, паспорт, снилс, дата рождения, адрес, телефон, e-mail) |
knowledge-template.columns[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
field |
string |
да | key — естественный ключ, title — имя, attributes.<путь> — атрибут, links.<связь> — ключи связанных сущностей |
header |
string |
||
hint |
string |
||
example |
string | number | boolean |
||
separator |
string |
Разделитель списка в ячейке (коды, ключи связей); по умолчанию «;» |
Экраны пакета (kind: View, kind: Component)¶
Экраны пакета лежат в views/*.yaml и components/*.yaml. Обёртка у них та
же, что у остальных объектов, а spec вида View описывает viewSpec, вида
Component — componentSpec; подписи экранов — ключи словарей
i18n/<locale>.yaml. Схема — копия схемы экранов ядра, её проверяют
package-sdk check и plan.
Раздел генерируется из кода — не правьте его руками.
Источник: sdk/package-sdk/schema/v1/view.schema.json.
view¶
Screens of a package: spec of the kinds View and Component
Собственной формы у корня нет — только определения; верхнего уровня: view/viewSpec, view/componentSpec.
view/viewSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
blocks |
= 1 |
Version of the set of blocks the layout is written in | |
title |
view/messageKey |
да | |
description |
view/messageKey |
||
nav |
объект | ||
audience |
объект | ||
source |
view/source |
да | |
params |
view/params |
||
layout |
view/layout |
да |
view/viewSpec.nav¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
group |
work | knowledge | packages |
A group of the console menu (a closed list, not a key of the dictionaries); none: packages | |
icon |
string |
||
order |
integer |
view/viewSpec.audience¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
roles |
array of view/slug |
да | Roles of the organization (slugs): a holder of one of them sees the view |
view/messageKey¶
A key of the package dictionaries
Значение: string.
view/slug¶
Значение: string.
view/source¶
Exactly one of {process, filter?}, {process, instance: param.<name>}, {tasks: {type}}, {knowledge: {kinds}}
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
process |
view/key |
||
filter |
view/expression |
||
instance |
string |
||
tasks |
объект | ||
knowledge |
объект |
view/source.tasks¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
view/key |
да |
view/source.knowledge¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kinds |
array of view/kind |
да |
view/key¶
Значение: string.
view/expression¶
Значение: string.
view/kind¶
Значение: string.
view/params¶
Значение: map → view/param.
view/name¶
Значение: string.
view/param¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
type |
string | integer | number | boolean | date | datetime | uuid |
да | |
required |
boolean |
view/layout¶
Значение: array of view/block.
view/block¶
A block of the closed set of version 1, named by the key block
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
block |
table | board | list | header | fields | timeline | artifacts | related | metrics | chart | steps | invoke | component |
да |
Условия:
| Условие | Следствие |
|---|---|
block ∈ table, list |
обязательно columns; title: view/messageKey; columns: view/columns; open: view/open; filters: view/paths; sort: view/sort; pageSize: integer |
block = board |
обязательно columns, card; title: view/messageKey; columns: = stages; card: view/card; open: view/open; filters: view/paths |
block = header |
обязательно title; title: view/path; status: view/path; actions: steps |
block = fields |
обязательно items; title: view/messageKey; section: view/messageKey; items: view/columns |
block ∈ timeline, steps |
title: view/messageKey |
block = artifacts |
title: view/messageKey; types: array of view/key |
block = related |
обязательно knowledge; title: view/messageKey; knowledge: объект; include: view/include |
block = metrics |
обязательно items; title: view/messageKey; items: array of объект |
block = chart |
обязательно chart, groupBy, value; title: view/messageKey; chart: bar | line | donut; groupBy: view/path; value: view/expression; label: view/messageKey; format: view/format |
block = invoke |
обязательно label, skill; title: view/messageKey; label: view/messageKey; skill: string; input: view/arguments |
block = component |
обязательно component; component: view/key; with: view/arguments |
view/block.knowledge¶
The record of knowledge the block starts from: its kind and a CEL expression of its key
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
kind |
view/kind |
да | |
key |
view/expression |
да |
view/block.items[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
view/columnKey |
||
title |
view/messageKey |
да | |
value |
view/expression |
да | |
format |
view/format |
view/columns¶
Значение: array of view/column.
view/column¶
What a cell shows: a path of the source (field) or a CEL expression (value), exactly one; label: none — the key <package>.fields.<path> of the dictionaries; key: none — the path
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
key |
view/columnKey |
||
label |
view/messageKey |
||
field |
view/path |
||
value |
view/expression |
||
format |
view/format |
view/columnKey¶
The key the values of a column come by in the data of a view
Значение: string.
view/path¶
Значение: string.
view/format¶
Значение: text | number | money | percent | date | datetime | due | duration | principal | status | link.
view/open¶
A view of the same package or of a package it requires: id — CEL of the id of the record it opens, params — CEL of its params
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
view |
view/key |
да | |
id |
view/expression |
||
params |
view/arguments |
view/arguments¶
Значение: map → view/expression.
view/paths¶
Значение: array of view/path.
view/sort¶
Значение: array of объект.
view/sort[]¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
field |
view/path |
да | |
dir |
asc | desc |
view/card¶
A card of a board: paths of the source for its title, subtitle and badge, and its fields
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
title |
view/path |
да | |
subtitle |
view/path |
||
fields |
view/columns |
||
badge |
view/path |
view/include¶
The links of the record shown: the include of POST /knowledge/entities:query
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
relations |
= * или array of string |
да | Names of the relations shown, or * for every relation the packages of the namespace declare |
direction |
out | in | both |
||
limit |
integer |
view/componentSpec¶
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
description |
view/messageKey |
||
params |
view/componentParams |
||
layout |
view/layout |
да |
view/componentParams¶
Значение: map → view/schemaParam или view/param — по условию.
view/schemaParam¶
A param typed by a JSON Schema
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
schema |
object |
да | JSON Schema of the param: inline or {$ref: <file>#<pointer>} of a schema of the package; CEL reads param.<name> by it |
required |
boolean |