AAventa Developer

Manifest Reference

manifest.json 的 closed-world 字段、包类型、能力、依赖、事件与版本规则。

Docs 0.1.0-dev.1Updated 2026-08-30PUBLIC

# 字段总表

字段必需类型与规则
manifest_version必须为 1.0
id小写分段标识;至少包含一个 ._- 分隔符。
versionSemVer 三段数字,可带 prerelease。
package_type五种公开包类型之一。
entrypoint非空 Registrar 类名。
capabilities唯一的 capability id 数组。
requires必需依赖数组。
optional_requires可选依赖数组;每项必须有非空 fallback。
lifecycle生命周期声明元数据;实际 handler 仍通过 Registrar 声明。
events事件声明对象数组。
migrations迁移元数据对象数组;执行对象必须与其匹配。
data_ownership唯一、非空 namespace 字符串数组。
uninstall_policyREMOVEPRESERVEEXPLICIT_PACKAGE_POLICY;默认 PRESERVE。
templates包相对路径数组。
assets包相对路径数组。
config_schema配置 schema 元数据;运行时 validator 仍通过 Registrar 声明。

未知顶层字段会以 manifest.unknown_field 拒绝;缺少必需字段会以 manifest.required_field_missing 拒绝。

# 完整骨架

{
  "manifest_version": "1.0",
  "id": "vendor.package",
  "version": "1.0.0",
  "package_type": "business-module",
  "entrypoint": "Vendor\\Package\\PackageRegistrar",
  "capabilities": [],
  "requires": [],
  "optional_requires": [],
  "lifecycle": [],
  "events": [],
  "migrations": [],
  "data_ownership": [],
  "uninstall_policy": "PRESERVE",
  "templates": [],
  "assets": [],
  "config_schema": {}
}

# 包类型

用途额外限制
business-module业务行为与自有数据能力仍需按矩阵审批。
theme-presentation主题和 presentation禁止业务 migration;不能提供业务 presentation data。
ui-extension受限 UI contribution禁止 migration、业务 data ownership 和 route.register。
provider显式 provider contract仅限声明的 provider 与自有数据。
legacy-adapter受审查的迁移边界不会自动获得任何现代 capability。

# Capability Reference

Capability允许的包类型说明
content.readbusiness-module, provider, legacy-adapter受控内容查询;需要审批。
content.decorate全部类型类型化 UI SLOT 或纯过滤器。
content.writebusiness-module, provider, legacy-adapter受控内容命令;需要人工审批。
user.profile.readbusiness-module, ui-extension, provider, legacy-adapter最小化、授权后的资料查询。
user.profile.writebusiness-module, provider, legacy-adapter受控资料命令。
user.group.writebusiness-module需要 Core owner 审批。
database.module.readbusiness-module, provider, legacy-adapter只读自己声明的数据命名空间。
database.module.writebusiness-module, provider, legacy-adapter只写自己声明的数据命名空间。
database.raw-sql.legacylegacy-adapter仅受审查的迁移边界,不是新业务 API。
database.core.write所有扩展包均被拒绝。
admin.ui.extendbusiness-module, ui-extension, legacy-adapter受控管理界面扩展。
network.outboundbusiness-module, provider, legacy-adapter受控 HTTPS 和域名白名单。
ui.theme.overridetheme-presentation命名 presentation target 的主题覆盖。
route.registerbusiness-module, theme-presentation, provider, legacy-adapter通过 Route Registry 声明;主题只允许 query intent。
policy.read全部类型通过主机 Policy 接口读取决策。
storage.public.read全部类型受控公共资源读取和 URL。
storage.private.readbusiness-module, provider, legacy-adapter需要资源级授权。
storage.module.writebusiness-module, provider, legacy-adapter只写包命名空间。
cache.module.write全部类型包级命名空间缓存。
task.registerbusiness-module, provider, legacy-adapter受控任务注册。
event.listenbusiness-module, provider, legacy-adapter监听 manifest 已声明的版本化事件。
provider.registerbusiness-module, theme-presentation, provider, legacy-adapter版本化 Provider;主题只允许唯一 Theme Provider。

判定语义:ALLOW 可进入 grant plan;CONDITIONAL 需要显式审批;DENY 永远不能授予。manifest 声明是必要条件,不等于已经获得授权。

# Dependencies

{"kind":"package","name":"source.package","range":">=1.0.0 <2.0.0"}
{"kind":"contract","name":"source.contract","range":"1.0.0","fallback":"FEATURE-DISABLED"}

kind 仅为 packageprovidercontract。range 使用以空格分隔的精确比较条件,支持 = > >= < <=;不支持 caret 或 wildcard。每个 package id 同时只能有一个 active version;必需依赖缺失/版本不符会阻止激活;可选依赖缺失或不兼容时使用冻结 fallback;cycle 会被拒绝。

# Events

事件 id 必须是版本化的点分标识,例如 example.greeting.render.v1。主机拥有 payload validator、NOTIFY/COLLECT mode、contribution validator 和 failure policy。包只能注册 manifest 已声明的事件。NOTIFY handler 必须返回 null;COLLECT 的结果必须通过主机 validator。执行顺序按 dependency rank、priority、package id、handler id 确定。

# Closed-world 与失败

不要添加“看起来合理”的字段。未知顶层字段、未知 dependency 字段、重复 capability、重复 data namespace、错误版本或错误 package type 都会 fail closed。使用 稳定诊断定位。