app 装配收尾:18 个模块接上,MVP 判据 1-2 端到端跑通

装配(app 是唯一组装层):
- wiring/engines.ts:skill/flow/loop/task/process/trigger 六个模块经端口接起来;
  两个范式引擎按统一 ParadigmEngine 契约暴露给 task —— 对上层不可区分
- agent-runner.ts:loop 的 Agent 回路经 ModelGateway(两缝之一,回放审看得见);
  出参过 schema 框住三型行动,不合规退化为「等人」而不是乱动世界
- container:interaction / human-tool / activity-registry / release 全部接上;
  event 的 TriggerMatcher 与 org 的 InFlightWorkProbe 以延迟绑定解环,端口不变
- workers/consumers.ts:派发器的两个消费者(任务监听推进旧单 / 触发器开新单,独立判定)
- tools/first-party.ts:查历史价(录制回放替身)+ 三分类打标(纯工具,DMN 确定性求值)
- seed-quote.ts:治理台四件事一次做完 —— 绑 LLM / 注册工具两审 / 经安装通道装活动包 /
  发布流程包(闭合校验通过)+ 配触发器与邮件通道

已验证(真机):
1. 治理台配置全过;活动包静态审 0 条提示、流程包闭合校验通过
2. 一封 RFQ 邮件入站 → 归属解析 → 触发器命中 1 → 起一条工作流 →
   A1 任务按岗位唯一人解析落到 BD 冯兵,runtime=running

修复:zod 判别式重复值(周期触发两型展开为 periodic-calendar / periodic-data,
triggerKindOf 对回三类分类学);活动构建脚本移出 activities(它要用 fs,
而活动包零环境能力 —— depcruise 拦下后按边界搬家)

358 个测试通过,门禁五道全绿

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
JCAI Main Agent
2026-07-27 02:24:36 +08:00
co-authored by Claude Opus 5
parent c6cdb4c310
commit 78dc03bb58
24 changed files with 1406 additions and 47 deletions
+11 -11
View File
@@ -38,8 +38,8 @@ export declare const formFieldKindSchema: z.ZodEnum<{
number: "number";
file: "file";
text: "text";
date: "date";
check: "check";
date: "date";
textarea: "textarea";
radio: "radio";
select: "select";
@@ -54,8 +54,8 @@ export declare const formFieldSchema: z.ZodObject<{
number: "number";
file: "file";
text: "text";
date: "date";
check: "check";
date: "date";
textarea: "textarea";
radio: "radio";
select: "select";
@@ -191,8 +191,8 @@ export declare const viewBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
}, z.core.$strip>, z.ZodObject<{
t: z.ZodLiteral<"mail">;
dir: z.ZodEnum<{
in: "in";
out: "out";
in: "in";
}>;
statusLabel: z.ZodOptional<z.ZodString>;
editable: z.ZodOptional<z.ZodBoolean>;
@@ -418,8 +418,8 @@ export declare const deliverableSchema: z.ZodObject<{
}, z.core.$strip>, z.ZodObject<{
t: z.ZodLiteral<"mail">;
dir: z.ZodEnum<{
in: "in";
out: "out";
in: "in";
}>;
statusLabel: z.ZodOptional<z.ZodString>;
editable: z.ZodOptional<z.ZodBoolean>;
@@ -652,8 +652,8 @@ export declare const executionWorkOrderSchema: z.ZodObject<{
}, z.core.$strip>, z.ZodObject<{
t: z.ZodLiteral<"mail">;
dir: z.ZodEnum<{
in: "in";
out: "out";
in: "in";
}>;
statusLabel: z.ZodOptional<z.ZodString>;
editable: z.ZodOptional<z.ZodBoolean>;
@@ -773,8 +773,8 @@ export declare const executionWorkOrderSchema: z.ZodObject<{
number: "number";
file: "file";
text: "text";
date: "date";
check: "check";
date: "date";
textarea: "textarea";
radio: "radio";
select: "select";
@@ -863,8 +863,8 @@ export declare const acceptanceWorkOrderSchema: z.ZodObject<{
number: "number";
file: "file";
text: "text";
date: "date";
check: "check";
date: "date";
textarea: "textarea";
radio: "radio";
select: "select";
@@ -995,8 +995,8 @@ export declare const workOrderSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
}, z.core.$strip>, z.ZodObject<{
t: z.ZodLiteral<"mail">;
dir: z.ZodEnum<{
in: "in";
out: "out";
in: "in";
}>;
statusLabel: z.ZodOptional<z.ZodString>;
editable: z.ZodOptional<z.ZodBoolean>;
@@ -1116,8 +1116,8 @@ export declare const workOrderSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
number: "number";
file: "file";
text: "text";
date: "date";
check: "check";
date: "date";
textarea: "textarea";
radio: "radio";
select: "select";
@@ -1180,8 +1180,8 @@ export declare const workOrderSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
number: "number";
file: "file";
text: "text";
date: "date";
check: "check";
date: "date";
textarea: "textarea";
radio: "radio";
select: "select";
@@ -1375,9 +1375,9 @@ export declare const chatMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
}, z.core.$strip>, z.ZodObject<{
k: z.ZodLiteral<"system">;
type: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
text: z.ZodString;
+5 -5
View File
@@ -8,9 +8,9 @@
import { z } from 'zod';
export declare const EVENT_TYPES: readonly ["data", "time", "human", "control"];
export declare const eventTypeSchema: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
export type EventType = z.infer<typeof eventTypeSchema>;
@@ -71,9 +71,9 @@ export type EventPayload = z.infer<typeof eventPayloadSchema>;
export declare const envelopeSchema: z.ZodObject<{
id: z.core.$ZodBranded<z.ZodString, "EventId", "out">;
type: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
correlation: z.ZodObject<{
@@ -134,9 +134,9 @@ export type Envelope = z.infer<typeof envelopeSchema>;
*/
export declare const envelopeDraftSchema: z.ZodObject<{
type: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
payload: z.ZodObject<{
@@ -235,9 +235,9 @@ export declare const listenerSpecSchema: z.ZodObject<{
dynamic: "dynamic";
}>;
eventType: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
keyFilter: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -260,9 +260,9 @@ export declare const registeredListenerSchema: z.ZodObject<{
dynamic: "dynamic";
}>;
eventType: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
keyFilter: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
+2 -2
View File
@@ -77,9 +77,9 @@ export declare const manifestDeclarationsSchema: z.ZodObject<{
dynamic: "dynamic";
}>;
eventType: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
keyFilter: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -954,9 +954,9 @@ export declare const activityManifestSchema: z.ZodObject<{
dynamic: "dynamic";
}>;
eventType: z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>;
keyFilter: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
+5 -5
View File
@@ -520,12 +520,10 @@ export declare const triggerConfigSchema: z.ZodObject<{
}, z.core.$strip>], "from">;
}, z.core.$strip>>>;
spec: z.ZodDiscriminatedUnion<[z.ZodObject<{
kind: z.ZodLiteral<"periodic">;
mode: z.ZodLiteral<"calendar">;
kind: z.ZodLiteral<"periodic-calendar">;
calendar: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"periodic">;
mode: z.ZodLiteral<"data-calendar">;
kind: z.ZodLiteral<"periodic-data">;
domain: z.ZodString;
object: z.ZodString;
dateField: z.ZodString;
@@ -535,9 +533,9 @@ export declare const triggerConfigSchema: z.ZodObject<{
kind: z.ZodLiteral<"event">;
rule: z.ZodString;
eventType: z.ZodDefault<z.ZodEnum<{
time: "time";
human: "human";
data: "data";
time: "time";
control: "control";
}>>;
}, z.core.$strip>, z.ZodObject<{
@@ -546,3 +544,5 @@ export declare const triggerConfigSchema: z.ZodObject<{
}, z.core.$strip>], "kind">;
}, z.core.$strip>;
export type TriggerConfig = z.infer<typeof triggerConfigSchema>;
/** 四个判别值 → 三类分类学(OS 3.1) */
export declare function triggerKindOf(spec: TriggerConfig['spec']): TriggerKind;