Telo内核
Telo内核是Telo清单的声明性执行主机。它加载YAML,编译CEL表达式,解析和注册控制器,索引资源实例,并协调它所知道的各种启动/拆除生命周期。
目标: Node.js (Rust/Go端口计划)
输入: 一个模块清单YAML文件或一个YAML文件目录
1.核心概念
Telo内核是一个 声明式执行主机.你用YAML描述资源;内核加载它们,连接控制器,并保持进程活动,直到所有工作完成。
内核执行三个功能:
- 加载程序: 读取YAML文件,编译CEL (
!cel值,!interpolate孔),并解析控制器入口点。 - 注册表: 索引资源实例的复合键
module.Kind.name. - 内核: 编排引导序列、管理事件总线和路由调用。
模块加载和资源发现 发生在加载阶段,在初始化任何资源之前。
2. 资源定义
清单中的每个资源都是类的实例 Telo.Definition。定义声明了几个正交方面:
| 方面 | 场 | 目的 |
|---|---|---|
capability | 生命周期的作用 | 其中一个 Runnable, Service, Invocable, Mount, Provider -互斥 |
topology | 成分 | 这种类型的内部结构是怎样的: Sequence, Router, Workflow |
extends | 继承 | 抽象接口这种实现(跨模块插件模式) |
controllers | 执行 | PURL引用的控制器实现 |
能力
capability 分配单个生命周期角色。内核使用它来确定何时调用 init(), run(),或者 invoke() 在控制器上。定义只声明一个功能。
拓扑结构
topology 命名某种类型的结构组成模式-如何从步骤,路由或节点内部组装它。当没有声明控制器时,它驱动内置执行,分析器中的结构验证以及编辑器中的画布渲染。
→ 文档/ topology.md (设计方案-尚未实施)
继承
extends 声明定义满足抽象接口 (Telo.Abstract),由另一个模块声明。这是子系统(如工作流后端)的插件模式。
对于完整的 Telo.Definition 字段引用,请参见 文档/resource-definition.md.
3. 玻璃纸插值
在处理清单对象之前,每个CEL表达式(a !cel 价值,每孔一根 !interpolate 或者 !sql -是编译的。这作为加载的一部分运行-任何编译错误都会立即停止引导序列。
主机环境变量仅通过类型化的根条目到达CEL: 声明一个 variables:/secrets:/ports: 带有的条目 env: 键并读为 !cel "variables.X" / !cel "secrets.X" / !cel "ports.X".
variables:
manifestPath:
env: MY_MANIFEST_PATH
type: string
resources:
- !cel "variables.manifestPath"
插值
!cel "expr"-一种表达;该值保持其CEL类型(整数,布尔值,…)。!interpolate "text ${{ expr }} text"-带孔的文本,总是字符串;每个孔通过CEL转换string().
一个普通的字符串举行 ${{ 从未编译: 它是不推荐使用的未标记的拼写,在加载时由 untagged-interpolation 移民和拒绝(ERR_UNTAGGED_INTERPOLATION) 它生存的地方。
4. Telo定义
模块声明它们处理所使用的资源类型 Telo.Definition:
kind: Telo.Definition
metadata:
name: Server # fully-qualified kind: Http.Server
module: Http
capability: Service # one of: Runnable, Service, Invocable, Mount, Provider, Template
schema: # JSON Schema — validated against each resource before create()
type: object
properties:
port: { type: integer }
host: { type: string }
required: [port]
controllers:
# Ordered list of Package URL (PURL) candidates — first match for the current runtime is used
- pkg:npm/@telorun/run@>=1.0.0?local_path=./nodejs#sequence
- pkg:cargo/telorun-run@>=1.0.0?local_path=./rust#sequence
当一个 Telo.Definition 实例初始化,它解析并加载控制器模块
并将其注册到内核。对于全分辨率算法 (本地路径、主机
node_modules,注册表缓存)和PURL格式,参见 controllers.md.