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:
co-authored by
Claude Opus 5
parent
c6cdb4c310
commit
78dc03bb58
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* 活动包的编译产出 —— **构建工具**,不是活动包的一部分(编码规范 §8.2 / ADR-004)。
|
||||
*
|
||||
* 「活动包 = 包清单 + 代码产物(.JS)+ 资产文件;清单**机器可读**,
|
||||
* 系统不执行代码即知包为何物。」
|
||||
*
|
||||
* 产出 `activities/<pkg>/dist/{manifest.json,index.js}`;
|
||||
* api 侧只经**文件**读取它们 —— 与 activities 之间只有安装通道,没有代码通道。
|
||||
* 放在 tools/ 而非 activities/ 是因为它要用 fs:活动包本身**零环境能力**,构建脚本不受此限。
|
||||
*/
|
||||
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
||||
import { dirname, join } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { manifest as quoteIntake } from '../activities/quote-intake/src/manifest.ts';
|
||||
|
||||
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
||||
|
||||
const PACKAGES = [{ dir: 'quote-intake', manifest: quoteIntake }] as const;
|
||||
|
||||
for (const pkg of PACKAGES) {
|
||||
const base = join(root, 'activities', pkg.dir);
|
||||
const dist = join(base, 'dist');
|
||||
await mkdir(dist, { recursive: true });
|
||||
await writeFile(join(dist, 'manifest.json'), JSON.stringify(pkg.manifest, null, 2), 'utf8');
|
||||
|
||||
// MVP 阶段直接把源码文本当产物落盘:静态审扫描的正是产物文本(import 与全局引用)。
|
||||
// 真编译(tsup 单文件 ESM)在装载器落地时接入 —— 见 docs/debt.md · M5-3
|
||||
const source = await readFile(join(base, 'src', 'index.ts'), 'utf8');
|
||||
await writeFile(join(dist, 'index.js'), source, 'utf8');
|
||||
process.stdout.write(`活动包已产出:${pkg.dir}\n`);
|
||||
}
|
||||
Reference in New Issue
Block a user