skill-engine(L4):载方法不载权力(白名单外工具即拒)、结晶片段经 ToolInvoker 留痕、 装配入信封、技能目录渐进披露 flow-engine(L5):四种步型、确定性谓词跳步、重试与声明给定的兜底、 异步步即监听(时限必配)、写类工具登记动作意向、步序位置持久 loop-engine(L5):自研 CMMN 子集解析器(表外构件直接报错,子集封顶可机器证明)、 两副标准生命周期与迁移拓扑(引擎不得私改)、Enabled ≠ Active、 语义性前提标待裁量评估(引擎不代裁量)、DMN 确定性求值 + 命中行留痕、 DRD 缺口演绎与拓扑序、双向驱动与交集导航(断点即人环)、三型行动、 终局唯放行与 Harness task(L6):终态五名裁定(released 唯一成功)、Harness 预算环外强制与停滞熔断 (监听中是健康态)、控制三语义(叫停不是终态,记最重档纠正)、改派留痕通知双方、 断点续跑三份持久状态、封卷触发蒸馏钩子 301 个测试通过,门禁五道全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
41 lines
1.9 KiB
TypeScript
41 lines
1.9 KiB
TypeScript
/**
|
|
* module: flow-engine —— 对外类型(编码规范 §10.1;语义出处 AM 05)。
|
|
*
|
|
* flow 范式:步序声明运行器(四种步型、重试与兜底、事件即步条件)。
|
|
* **零临场调度** —— 运行中不得由 LLM 决定步序、跳步或兜底。
|
|
*/
|
|
import type { FlowModel, FlowStep, TaskId } from '@contracts';
|
|
import type { FailureAction, FlowIssue, FlowPosition, NextAction, StepRuntime, StepState } from './internal/domain/step-sequence.ts';
|
|
export type { FailureAction, FlowIssue, FlowModel, FlowPosition, FlowStep, NextAction, StepRuntime, StepState };
|
|
export declare class FlowDeclarationInvalidError extends Error {
|
|
readonly issues: readonly FlowIssue[];
|
|
constructor(issues: readonly FlowIssue[]);
|
|
}
|
|
/** 一次推进的结果 —— 由 task 驱动,不自转 */
|
|
export type AdvanceOutcome = {
|
|
readonly position: FlowPosition;
|
|
readonly status: 'running' | 'awaiting' | 'finished' | 'blocked';
|
|
/** awaiting 时:在等什么 */
|
|
readonly waitingFor?: {
|
|
readonly kind: 'human' | 'event' | 'time';
|
|
readonly ref: string;
|
|
readonly deadline: string;
|
|
};
|
|
/** finished 时:末步验收工单的裁决决定终态 */
|
|
readonly released?: boolean;
|
|
readonly blockedReason?: string;
|
|
};
|
|
export type FlowEngineService = {
|
|
/** 装载步序声明并校验 —— 谱必须全程可静态检查 */
|
|
load(taskId: TaskId, model: FlowModel): Promise<FlowPosition>;
|
|
position(taskId: TaskId): Promise<FlowPosition | undefined>;
|
|
/** 推进一步(或若干确定步);异步步进入 awaiting 并登记监听 */
|
|
advance(taskId: TaskId): Promise<AdvanceOutcome>;
|
|
/** 事件即步的完成条件:人事件 / 数据事件 / 时间事件到达即续跑 */
|
|
resume(taskId: TaskId, event: {
|
|
kind: 'human' | 'data' | 'time';
|
|
ref: string;
|
|
payload: Record<string, unknown>;
|
|
}): Promise<AdvanceOutcome>;
|
|
};
|