@astrale-domains/shell

中文文档
0.2.0发布于 2026/11/07Apache-2.0TypeScriptES Module近 30 天下载 4514

Astrale Shell 域名计划和远程产品实施

中文使用文档
文档目录9 节
  1. 合同
  2. 设置
  3. 邀请
  4. 释放
  5. 查看访问
  6. 命名空间和别名
  7. 版本数
  8. 来源和资格
  9. 出版边界

贝壳域

Shell拥有每个人的账户(User他们的团体Group)),其作用(包括:Role页:1 简介 workspace.member ⊂ workspace.admin 和原子 user.reader, (中文(简体) ), user.writer, (中文(简体) ), group.reader, (中文(简体) ), group.writer, (中文(简体) ), directory.provisioner),视图为没有配置文件的账户 陆地上的土地(view_access),实例命名空间及其别名,以及一个应用程序视图,其 进入点。 所有权威都来自克内尔角色,由克内尔直接或通过团体持有 extends_with;目录可能提供账户和组。 设计、其法律以及 修正案载于 docs/design/accounts-and-roles.md· ; 每一个法律的执行和测试 docs/accounts/laws.tsv,每个 假设情况的证据 docs/accounts/scenarios.tsv。 。 。 .

角色前的模型保存在它的呼叫者 legacy/ 文件夹,列于 legacy/LEDGER.md 方法 docs/legacy.md; 内容 说明如下: docs/legacy/shell-domain-before-roles.md。 。 。 .

合同

方法来电获准投入产出
User.create静态user.writer{ email, name, givenName?, familyName?, attributes? }{ user, created }
User.invite静态user.writer{ user, profile?: 'member' | 'admin' }{ invitationId, user, state }
User.update账户user.writer{ name?, email?, givenName?, familyName?, icon?, attributes? }{}
User.updateProfile账户持有者{ name?, icon? }{}
User.saveSettings账户账户本身{ set?, unset? }{ settings }
User.deactivate, (中文(简体) ), User.reactivate, (中文(简体) ), User.delete账户user.writer{}{}
User.provision静态directory.provisioner{ directory, externalId, email, name, givenName?, familyName?, active }{ user, created, adopted }
User.deprovision静态directory.provisioner{ directory, externalId }{}
Group.create静态group.writer{ name, description?, icon?, attributes? }{ group }
Group.update, (中文(简体) ), Group.delete组合group.writer{ name?, description?, icon?, attributes? }, (中文(简体) ), {}{}
Group.assignMember, (中文(简体) ), Group.unassignMember静态group.writer, (中文(简体) ), directory.provisioner{ member, group } (单位:千美元)@NodeId 路径){}
Group.provision静态directory.provisioner{ directory, externalId, name }{ group, created }
Group.deprovision静态directory.provisioner{ directory, externalId }{}
disconnectDirectory函数directory.provisioner{ directory }{ users, groups }
WorkspaceSettings.save/:shell.astrale.ai:core.settingsworkspace.admin{ set?, unset? }{ settings }

拒绝(reason.code,家属: USER_EMAIL_INVALID (评价-错误); USER_NOT_FOUND, (中文(简体) ), GROUP_NOT_FOUND (NOT FOUND) (中文(简体) ); USER_EMAIL_TAKEN, (中文(简体) ), USER_DIRECTORY_MANAGED, (中文(简体) ), USER_ADMINISTRATOR_PROTECTED, (中文(简体) ), USER_LAST_ADMINISTRATOR, (中文(简体) ), USER_ACTIVE, (中文(简体) ), USER_SUSPENDED, (中文(简体) ), PROFILE_NOT_HELD, (中文(简体) ), GROUP_DIRECTORY_MANAGED, (中文(简体) ), GROUP_NOT_DIRECTORY_MANAGED, (中文(简体) ), GROUP_ROLE_PROTECTED (详细情况) { role }, (中文(简体) ), GROUP_MEMBERSHIP_CYCLE, (中文(简体) ), DIRECTORY_CONFLICT (详细情况) { user }, (中文(简体) ), ACCOUNT_CHANGED, (中文(简体) ), GROUP_CHANGED 成员 方法保存 INVALID_GROUP_MEMBERSHIP_REFERENCE, (中文(简体) ), GROUP_MEMBERSHIP_ENDPOINTS_UNAVAILABLE, (中文(简体) ), GROUP_MEMBERSHIP_CONFLICT, (中文(简体) ), GROUP_MEMBERSHIP_UNCONFIRMED,邀请 INVITATION_CONFLICT, (中文(简体) ), INVITATION_REJECTED设置方法 SETTINGS_TOO_MANY, (中文(简体) ), SETTINGS_NAME_REPEATED (评价-错误), SETTINGS_NOT_FOUND (NOT FOUND), (英语:, SETTINGS_CHANGED (冲突)。 SDK没有FORBIDDEN的家族: 一项禁止为了 账户的状况、一个集团或其打电话者回答CONFLICT.

用户和组声明不写规则:只有他们的方法来写,然后是Shell的授权 克内尔无法说明的法律(U1-U6,G2-G4). 需要账户的域询问 user.writer (和 user.reader在释放时, requirements({ roles: [{ role: S.core.nodes['user.writer'], members: [requirements.domain] }] }), (中文(简体) ), 将自己的记录与账户连接起来,并用自己的功能进行测试 hasRole 政策。 每个字都保留 frozen =: suspended 或者说 directoryActive === false (U2):该 Kernel拒绝验证一个被冻结的账户.

设置

设置是最多64个名字的 JSON 对象, 应用程序选择并验证 本身( GUI 存储) dock, (中文(简体) ), wallpaper, (中文(简体) ), appearance, (中文(简体) ), locale...):新设置不需要 壳放出. UserSettings 持有一个人的账户 user_settings 财务报告和审定财务报表 第一次更改时创建; 只有账户本身读和写它们, 没有角色读取另一个 被删除的账户. WorkspaceSettings一个核心节点 /:shell.astrale.ai:core.settings,持有工作空间的默认和定制:每个人 阅读它,管理员保存它。 更改合并到存储对象 : set 写名字, unset 脱去,在它读到的修订版上; 当另一个窗口先写时, Shell读到 并再次合并,所以两者都不消除.

邀请

User.invite 授予配置文件( e)extends_with 改为 profile.<name>),然后请管理员发送 通过壳牌公司的入学整合邀请,该整合包含 { user, email, profile, requestId, requestedBy }:电子邮件是账户的自有. 它的提供人薄荷薄荷 一种有引用约束的果壳证明 为它配置的 HTTPS 入侵观众。 返回的待发邀请无法证明电子邮件 交货或完成登记。 管理员将已核实的电子邮件的第一个签名绑定到 账户(U8).

释放

domain.ts 宣布角色和范围. workspace.admin 每一贝壳作用和可给予的 Kernel 角色 (R2); 捆绑成员 QQ 管理员和原子角色 释放成员 (AM1); 成员持有核心 writer,管理核心 admin; 没有配置文件持有核心 reader,哪个管理员 凡只开放其见解者,均得享受它的报酬 内核 authority.reader, (中文(简体) ), graph.reader 财务报告和审定财务报表 graph.writer。安装它需要安装器 赋予它所约束的每一个角色:根.

查看访问

给一个身份的视图决定它在哪里降落, 而不是它读的. view_access 运行 从任何身份——一个账户,一个组,一个角色——到一个Kernel视图;每个端与它的 节点. 管理员用"变相"来写;管理员用"变相"来写;或边民的观众和成员用"变相"来读. 访客登陆是自己的查询(@astrale-os/shell: workspace.member 打开工作空间; 其他人读 内核 reader,它持有的意见.

命名空间和别名

一个别名 一个节点。 它不给任何好处. 名称最多指定一个节点 每个作者的命名空间 : alias 宣告内核密钥 unique: [['source', 'slug']] 联合国 所以Kernel拒绝在任何突变、壳牌或一种 管理员自己的 mutate。边缘身份每个命名空间最多有一个别名。 一个别名 是一个路径, /:shell.astrale.ai:core.views~"shell.astrale.ai:class.alias"(roadmap),并达到 节点只供读者读取该节点. 它的目标终点接受任何节点,一个类舍 不拥有,所以其节点被删除时其别名会解去; Namespace stay.

核心命名空间 views 保存打开的名字 /v/<name>名称空间和别名声明 read: true 财务报告和审定财务报表 traverse: true:一个读者列出并沿用它可能读取的节点的别名, 对任何其他节点的别名并不存在。 贝壳,通过它的别名,边缘, 找到每个名字的节点,甚至一个它不读.

link 命名目标路径到达的任何节点, 无论域拥有它: 一个别名不给任何东西, 每个读者只看见其阅读的节点的别名。 仅提供节点 管理员认为是接口的礼貌, 而不是服务器的保证; 任何已学习的作者 从突变的定位器中找到路径是否达到节点.

方法电话拒绝
链接一次有壳牌权威的突变 其定位器解决了 targetINVALID_NAME, (中文(简体) ), TARGET_NOT_FOUND, (中文(简体) ), NAME_TAKEN, (中文(简体) ), TARGET_ALREADY_ALIASED
取消链接一个是用壳牌的威信读出别名Path,一个是突变INVALID_NAME, (中文(简体) ), NAME_NOT_FOUND
重命名相同; 将名称重命名为不写INVALID_NAME, (中文(简体) ), NAME_NOT_FOUND, (中文(简体) ), NAME_TAKEN

名字是小写中的边缘弹道( Edge sults) (INVALID_NAME) (中文(简体) ). 这条规则是Shell的:一个管理员 写入 mutate 绕过它,从来没有键。 除了钥匙以外,没有什么能保护一个名字的独特性. unlink 财务报告和审定财务报表 rename 更改化名时,只保留他们读取的名字,所以 同时重命名答案 NAME_NOT_FOUND 而不是改变另一个名字。 贝壳映射克内尔 密封拒绝 :

内核拒绝变异链接取消链接重命名
MUTATION_POST_STATE_INVALID规则 duplicate-keyNAME_TAKEN宣传NAME_TAKEN
MUTATION_PRECONDITION_FAILED (别名"边缘"存在,已消失,或带有另一个名称)TARGET_ALREADY_ALIASEDNAME_NOT_FOUNDNAME_NOT_FOUND
MUTATION_LOCATOR_INVALID (目标路径达到节点,或目标被删除)TARGET_NOT_FOUNDNAME_NOT_FOUNDNAME_NOT_FOUND

其他的失败都会蔓延. workspace.admin 持有者拨打三种方法并写入 alias 边由他们自己的突变.

版本数

域名的版本是 version 联 合 国 domain/package.json,请写出 也写到根上 package.json,项目,什么 astrale-domain publish 读取。 一个 数字名称 npm 软件包 @astrale-domains/shell 和登记册 shell.astrale.ai@<version>,所以一个实例按数字安装一个已出版的版本:

astrale domain install shell.astrale.ai@<version> -i <instance> --as <instance>-root

shell.astrale.ai@<major>.<minor> 安装该行最稳定版本. 域名 发布稳定版本,从0.1.1起;0.1.0起,首次出版,命名为0.1.0-β.51 释放.

来源和资格

每个声明,查询和突变都有自己的语义文件. 地层根是外层; 集成/提供者拥有外部效果、观点/ ui 拥有 目录表面。 运行时有一个默认导出并绑定每个处理器 . Dataset 由 root astrale.config.ts 懒得引用 .

域名作者从@astrale-domains/ shell 导入 Schema; 平台工人使用明文 /域和/运行时输出. 创建/登记、安装当局、邀请 交付,运行时间回放和浏览器渲染是单独的资质边界. 重新设计行政组成、公布登记册组和真正的邀请/创建 出行的路口仍然是出行出行的出行口;这一来源的README并不是这些出行口经过的证据.

出版边界

@astrale-domains/shell 是可执行的平台软件包,也是对普通软件的故意例外 域名出版产品. 它发布远程壳牌域定义和平台所需的运行时间 通过明确规定的工人部署 ./domain 财务报告和审定财务报表 ./runtime 子路径,而其根仍然 只有司马 因此,它的构建将明确的根源汇编为: tsconfig.package.json 并适用 壳牌公司所属的规范化和对发射平台关闭的检查。 仅源 # 化名为 重写到相对的联署材料和宣言参考文献,因此消费者路径绘图无法捕捉私人壳牌 类型。 Tarball 合格后核查出口的准确性、孤立的亚道、缺乏来源 地图,并仅使用公共 npm 依赖性安装.

一般情况 astrale-domain package 命令只保留Schema,只显示域根加 软件包元数据。 此 Shell 例外不得复制到普通产品域或用于 削弱SDK合同。 部署消费者必须使用明确可执行的子路径,从而连接 schema 导入无法通过 Shell 的私人应用程序或运行时间执行 .

源、包和确定性测试资格仍然有别于安装设备, 发布软件包、浏览器和现场证据。 Shell 不代理认证 符;标准域符交换由协议,服务器,和SDK所拥有.

版本与发布记录

@astrale-domains/shell 共发布 57 个版本,首次发布于 2026/08/22;过去 12 个月发布了 57 个版本。

版本发布日期距今
0.2.0latest2026/11/07今天
0.1.112026/11/07今天
0.1.102026/11/07今天
0.1.92026/11/071 天前
0.1.82026/11/071 天前
0.1.72026/11/061 天前

其他发布通道:beta → 0.1.0-beta.51。

关于 @astrale-domains/shell 的常见问题

@astrale-domains/shell 是什么?

Astrale Shell 域名计划和远程产品实施

如何安装 @astrale-domains/shell?

在项目目录运行 npm install @astrale-domains/shell,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@astrale-os/sdk(>=0.6.0-beta.60 <1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@astrale-domains/shell 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@astrale-domains/shell 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@astrale-domains/shell 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@astrale-domains/shell 可以商用吗?

@astrale-domains/shell 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@astrale-domains/shell 的下载量有多少?

根据 npm 官方下载统计,@astrale-domains/shell 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,514 次,日均约 150 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@astrale-domains/shell 还在维护吗?

最新版本 0.2.0 发布于 2026/11/07(今天);至今共发布 57 个版本,其中过去 12 个月发布了 57 个;首次发布于 2026/08/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。