@siming-org/core 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -459,6 +459,38 @@ declare const SourcePresetSchema: z.ZodObject<{
459
459
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
460
460
  }, z.core.$strip>;
461
461
  type SourcePreset = z.infer<typeof SourcePresetSchema>;
462
+ /**
463
+ * 工具类检查项声明:type=CLI 检查函数注册表键(kebab-case,运行时校验——注册表在 CLI 侧,
464
+ * server 不感知检查语义,不同版本 CLI 的 type 集不同,前向兼容)。
465
+ * params 仅限检查项内部常量(如超时秒数、正则片段);项目差异参数(repoPath/baseBranch 等)
466
+ * 一律经运行时解析链(task/项目配置),禁止来自资产 params。
467
+ */
468
+ declare const ToolCheckSchema: z.ZodObject<{
469
+ type: z.ZodString;
470
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
471
+ }, z.core.$strip>;
472
+ type ToolCheck = z.infer<typeof ToolCheckSchema>;
473
+ /**
474
+ * AI 自检项声明:id 节点内唯一(推进前自检留痕按 refId=id 匹配——CheckItem.refId),
475
+ * item=自检要求原文(与节点 prompt 产出检查节同源对应)。
476
+ */
477
+ declare const AiCheckSchema: z.ZodObject<{
478
+ id: z.ZodString;
479
+ item: z.ZodString;
480
+ }, z.core.$strip>;
481
+ type AiCheck = z.infer<typeof AiCheckSchema>;
482
+ /** TOOL_CHECKS_MAX = 资产层声明上限(防配置面失控;运行时逐项执行有超时兜底) */
483
+ declare const NODE_CHECKS_MAX = 20;
484
+ /**
485
+ * 函数级校验:节点内 aiCheck id 唯一性(assertUniqueNodeIds 先例——模板级 schema 禁挂 refine,
486
+ * Zod4 partial 派生陷阱;导入/组装路由调用)。
487
+ */
488
+ declare function assertUniqueAiCheckIds(nodes: ReadonlyArray<{
489
+ id: string;
490
+ aiChecks?: ReadonlyArray<{
491
+ id: string;
492
+ }> | undefined;
493
+ }>): void;
462
494
  declare const DagNodeSchema: z.ZodObject<{
463
495
  id: z.ZodString;
464
496
  label: z.ZodString;
@@ -473,6 +505,14 @@ declare const DagNodeSchema: z.ZodObject<{
473
505
  contentHash: z.ZodString;
474
506
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
475
507
  }, z.core.$strip>>;
508
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
509
+ type: z.ZodString;
510
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
511
+ }, z.core.$strip>>>;
512
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
513
+ id: z.ZodString;
514
+ item: z.ZodString;
515
+ }, z.core.$strip>>>;
476
516
  }, z.core.$strip>;
477
517
  type DagNode = z.infer<typeof DagNodeSchema>;
478
518
  /** 暂停点类型——固定枚举,引擎仅处理这两种语义(human_approval 落 paused / checkpoint 仅记录不停留) */
@@ -562,6 +602,14 @@ declare const DagTemplateSchema: z.ZodObject<{
562
602
  contentHash: z.ZodString;
563
603
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
564
604
  }, z.core.$strip>>;
605
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
606
+ type: z.ZodString;
607
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
608
+ }, z.core.$strip>>>;
609
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
610
+ id: z.ZodString;
611
+ item: z.ZodString;
612
+ }, z.core.$strip>>>;
565
613
  }, z.core.$strip>>;
566
614
  edges: z.ZodArray<z.ZodObject<{
567
615
  from: z.ZodString;
@@ -607,6 +655,14 @@ declare const DagTemplateCreateSchema: z.ZodObject<{
607
655
  contentHash: z.ZodString;
608
656
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
609
657
  }, z.core.$strip>>;
658
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
659
+ type: z.ZodString;
660
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
661
+ }, z.core.$strip>>>;
662
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
663
+ id: z.ZodString;
664
+ item: z.ZodString;
665
+ }, z.core.$strip>>>;
610
666
  }, z.core.$strip>>;
611
667
  edges: z.ZodArray<z.ZodObject<{
612
668
  from: z.ZodString;
@@ -653,6 +709,14 @@ declare const DagTemplateUpdateSchema: z.ZodObject<{
653
709
  contentHash: z.ZodString;
654
710
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
655
711
  }, z.core.$strip>>;
712
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
713
+ type: z.ZodString;
714
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
715
+ }, z.core.$strip>>>;
716
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
717
+ id: z.ZodString;
718
+ item: z.ZodString;
719
+ }, z.core.$strip>>>;
656
720
  }, z.core.$strip>>>;
657
721
  edges: z.ZodOptional<z.ZodArray<z.ZodObject<{
658
722
  from: z.ZodString;
@@ -759,11 +823,21 @@ declare const TASK_TYPES: readonly ["feature", "bugfix", "ui-tweak", "research"]
759
823
  type TaskType = (typeof TASK_TYPES)[number];
760
824
  /** 条目短 id 格式:服务端生成 6 位 base36(条目定位/翻转用,同 record 内查重) */
761
825
  declare const ENTRY_ID_REGEX: RegExp;
762
- /** 完成判定清单条目(item = 判定项原文,passed = 逐项 ✅/❌ 状态) */
826
+ /**
827
+ * 完成判定清单条目(item = 判定项原文,passed = 逐项 ✅/❌ 状态)。
828
+ * T202609230001:source/refId——自检留痕校验通道:aiChecks.id 声明项须存在
829
+ * refId==id 且 passed===true(或 item 含不适用+理由)的留痕;source 区分自报(self,
830
+ * 缺省)与工具写入(tool,本版不写,保留通道)。
831
+ */
763
832
  declare const CheckItemSchema: z.ZodObject<{
764
833
  id: z.ZodString;
765
834
  item: z.ZodString;
766
835
  passed: z.ZodBoolean;
836
+ source: z.ZodOptional<z.ZodEnum<{
837
+ self: "self";
838
+ tool: "tool";
839
+ }>>;
840
+ refId: z.ZodOptional<z.ZodString>;
767
841
  }, z.core.$strip>;
768
842
  type CheckItem = z.infer<typeof CheckItemSchema>;
769
843
  /** 产物类型静态枚举(决策 5:API 契约字段,非用户自定义分类) */
@@ -813,9 +887,23 @@ declare const ReviewSummarySchema: z.ZodObject<{
813
887
  critical: z.ZodNumber;
814
888
  }, z.core.$strip>;
815
889
  type ReviewSummary = z.infer<typeof ReviewSummarySchema>;
890
+ /**
891
+ * 测试报告结构化留痕(B1 判定数据):command=执行命令、四计数。
892
+ * skipped>0 时须持 decisions topic=skip-authorized 授权留痕(D9 词表)。
893
+ */
894
+ declare const TestReportSchema: z.ZodObject<{
895
+ command: z.ZodString;
896
+ passed: z.ZodNumber;
897
+ failed: z.ZodNumber;
898
+ skipped: z.ZodNumber;
899
+ }, z.core.$strip>;
900
+ type TestReport = z.infer<typeof TestReportSchema>;
816
901
  /**
817
902
  * 节点执行记录(nodeId → record)。无 completedAt——完成时间单权威在
818
903
  * dagInstance.nodeStates(决策 11:状态属性归状态机,双存必然漂移)。
904
+ * T202609230001:结构化判定字段(B 档门禁数据落点,点路径 $set 小步写)——
905
+ * baseBranch(ALIGN/A2/A3/B3 链)、verifiedCommit(B5/B7)、fixesApplied(B4 条件门禁)、
906
+ * testReport(B1)、deferredIssues(B8)、evidenceFiles(B9)。
819
907
  */
820
908
  declare const NodeRecordSchema: z.ZodObject<{
821
909
  summary: z.ZodOptional<z.ZodString>;
@@ -823,6 +911,11 @@ declare const NodeRecordSchema: z.ZodObject<{
823
911
  id: z.ZodString;
824
912
  item: z.ZodString;
825
913
  passed: z.ZodBoolean;
914
+ source: z.ZodOptional<z.ZodEnum<{
915
+ self: "self";
916
+ tool: "tool";
917
+ }>>;
918
+ refId: z.ZodOptional<z.ZodString>;
826
919
  }, z.core.$strip>>>;
827
920
  artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
828
921
  id: z.ZodString;
@@ -856,6 +949,17 @@ declare const NodeRecordSchema: z.ZodObject<{
856
949
  rounds: z.ZodNumber;
857
950
  critical: z.ZodNumber;
858
951
  }, z.core.$strip>>;
952
+ baseBranch: z.ZodOptional<z.ZodString>;
953
+ verifiedCommit: z.ZodOptional<z.ZodString>;
954
+ fixesApplied: z.ZodOptional<z.ZodNumber>;
955
+ testReport: z.ZodOptional<z.ZodObject<{
956
+ command: z.ZodString;
957
+ passed: z.ZodNumber;
958
+ failed: z.ZodNumber;
959
+ skipped: z.ZodNumber;
960
+ }, z.core.$strip>>;
961
+ deferredIssues: z.ZodOptional<z.ZodArray<z.ZodString>>;
962
+ evidenceFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
859
963
  }, z.core.$strip>;
860
964
  type NodeRecord = z.infer<typeof NodeRecordSchema>;
861
965
  /** 任务级文档:需求 What/Why + 验收标准 + 非目标 + 轨道识别结论 */
@@ -899,6 +1003,14 @@ declare const DagInstanceNodeSchema: z.ZodObject<{
899
1003
  prompt: z.ZodString;
900
1004
  skills: z.ZodDefault<z.ZodArray<z.ZodString>>;
901
1005
  agents: z.ZodDefault<z.ZodArray<z.ZodString>>;
1006
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1007
+ type: z.ZodString;
1008
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
1009
+ }, z.core.$strip>>>;
1010
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1011
+ id: z.ZodString;
1012
+ item: z.ZodString;
1013
+ }, z.core.$strip>>>;
902
1014
  }, z.core.$strip>;
903
1015
  type DagInstanceNode = z.infer<typeof DagInstanceNodeSchema>;
904
1016
  declare const DagInstanceSchema: z.ZodObject<{
@@ -912,6 +1024,14 @@ declare const DagInstanceSchema: z.ZodObject<{
912
1024
  prompt: z.ZodString;
913
1025
  skills: z.ZodDefault<z.ZodArray<z.ZodString>>;
914
1026
  agents: z.ZodDefault<z.ZodArray<z.ZodString>>;
1027
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1028
+ type: z.ZodString;
1029
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
1030
+ }, z.core.$strip>>>;
1031
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1032
+ id: z.ZodString;
1033
+ item: z.ZodString;
1034
+ }, z.core.$strip>>>;
915
1035
  }, z.core.$strip>>;
916
1036
  edges: z.ZodArray<z.ZodObject<{
917
1037
  from: z.ZodString;
@@ -950,6 +1070,7 @@ declare const HistoryActionSchema: z.ZodEnum<{
950
1070
  rejected: "rejected";
951
1071
  cancelled: "cancelled";
952
1072
  reopened: "reopened";
1073
+ checks_rejected: "checks_rejected";
953
1074
  }>;
954
1075
  declare const HistoryEntrySchema: z.ZodObject<{
955
1076
  nodeId: z.ZodString;
@@ -963,6 +1084,7 @@ declare const HistoryEntrySchema: z.ZodObject<{
963
1084
  rejected: "rejected";
964
1085
  cancelled: "cancelled";
965
1086
  reopened: "reopened";
1087
+ checks_rejected: "checks_rejected";
966
1088
  }>;
967
1089
  timestamp: z.ZodDefault<z.ZodDate>;
968
1090
  details: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -999,6 +1121,14 @@ declare const TaskSchema: z.ZodObject<{
999
1121
  prompt: z.ZodString;
1000
1122
  skills: z.ZodDefault<z.ZodArray<z.ZodString>>;
1001
1123
  agents: z.ZodDefault<z.ZodArray<z.ZodString>>;
1124
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1125
+ type: z.ZodString;
1126
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
1127
+ }, z.core.$strip>>>;
1128
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1129
+ id: z.ZodString;
1130
+ item: z.ZodString;
1131
+ }, z.core.$strip>>>;
1002
1132
  }, z.core.$strip>>;
1003
1133
  edges: z.ZodArray<z.ZodObject<{
1004
1134
  from: z.ZodString;
@@ -1038,6 +1168,11 @@ declare const TaskSchema: z.ZodObject<{
1038
1168
  id: z.ZodString;
1039
1169
  item: z.ZodString;
1040
1170
  passed: z.ZodBoolean;
1171
+ source: z.ZodOptional<z.ZodEnum<{
1172
+ self: "self";
1173
+ tool: "tool";
1174
+ }>>;
1175
+ refId: z.ZodOptional<z.ZodString>;
1041
1176
  }, z.core.$strip>>>;
1042
1177
  artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
1043
1178
  id: z.ZodString;
@@ -1071,6 +1206,17 @@ declare const TaskSchema: z.ZodObject<{
1071
1206
  rounds: z.ZodNumber;
1072
1207
  critical: z.ZodNumber;
1073
1208
  }, z.core.$strip>>;
1209
+ baseBranch: z.ZodOptional<z.ZodString>;
1210
+ verifiedCommit: z.ZodOptional<z.ZodString>;
1211
+ fixesApplied: z.ZodOptional<z.ZodNumber>;
1212
+ testReport: z.ZodOptional<z.ZodObject<{
1213
+ command: z.ZodString;
1214
+ passed: z.ZodNumber;
1215
+ failed: z.ZodNumber;
1216
+ skipped: z.ZodNumber;
1217
+ }, z.core.$strip>>;
1218
+ deferredIssues: z.ZodOptional<z.ZodArray<z.ZodString>>;
1219
+ evidenceFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
1074
1220
  }, z.core.$strip>>>;
1075
1221
  archNotes: z.ZodDefault<z.ZodArray<z.ZodObject<{
1076
1222
  id: z.ZodString;
@@ -1089,6 +1235,7 @@ declare const TaskSchema: z.ZodObject<{
1089
1235
  rejected: "rejected";
1090
1236
  cancelled: "cancelled";
1091
1237
  reopened: "reopened";
1238
+ checks_rejected: "checks_rejected";
1092
1239
  }>;
1093
1240
  timestamp: z.ZodDefault<z.ZodDate>;
1094
1241
  details: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -1134,6 +1281,7 @@ declare const TaskContextSchema: z.ZodObject<{
1134
1281
  "ui-tweak": "ui-tweak";
1135
1282
  research: "research";
1136
1283
  }>>;
1284
+ projectId: z.ZodString;
1137
1285
  currentNode: z.ZodString;
1138
1286
  currentPhase: z.ZodString;
1139
1287
  status: z.ZodString;
@@ -1149,6 +1297,14 @@ declare const TaskContextSchema: z.ZodObject<{
1149
1297
  skills: z.ZodArray<z.ZodString>;
1150
1298
  agents: z.ZodArray<z.ZodString>;
1151
1299
  upcomingPause: z.ZodNullable<z.ZodString>;
1300
+ toolChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
1301
+ type: z.ZodString;
1302
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
1303
+ }, z.core.$strip>>>;
1304
+ aiChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
1305
+ id: z.ZodString;
1306
+ item: z.ZodString;
1307
+ }, z.core.$strip>>>;
1152
1308
  }, z.core.$strip>>;
1153
1309
  pausedAtEdge: z.ZodNullable<z.ZodObject<{
1154
1310
  from: z.ZodString;
@@ -1169,6 +1325,10 @@ declare const TaskContextSchema: z.ZodObject<{
1169
1325
  enteredAt: z.ZodNullable<z.ZodDate>;
1170
1326
  completedAt: z.ZodNullable<z.ZodDate>;
1171
1327
  }, z.core.$strip>>;
1328
+ edges: z.ZodDefault<z.ZodArray<z.ZodObject<{
1329
+ from: z.ZodString;
1330
+ to: z.ZodString;
1331
+ }, z.core.$strip>>>;
1172
1332
  taskDoc: z.ZodNullable<z.ZodObject<{
1173
1333
  what: z.ZodString;
1174
1334
  why: z.ZodString;
@@ -1182,6 +1342,11 @@ declare const TaskContextSchema: z.ZodObject<{
1182
1342
  id: z.ZodString;
1183
1343
  item: z.ZodString;
1184
1344
  passed: z.ZodBoolean;
1345
+ source: z.ZodOptional<z.ZodEnum<{
1346
+ self: "self";
1347
+ tool: "tool";
1348
+ }>>;
1349
+ refId: z.ZodOptional<z.ZodString>;
1185
1350
  }, z.core.$strip>>>;
1186
1351
  artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
1187
1352
  id: z.ZodString;
@@ -1215,6 +1380,17 @@ declare const TaskContextSchema: z.ZodObject<{
1215
1380
  rounds: z.ZodNumber;
1216
1381
  critical: z.ZodNumber;
1217
1382
  }, z.core.$strip>>;
1383
+ baseBranch: z.ZodOptional<z.ZodString>;
1384
+ verifiedCommit: z.ZodOptional<z.ZodString>;
1385
+ fixesApplied: z.ZodOptional<z.ZodNumber>;
1386
+ testReport: z.ZodOptional<z.ZodObject<{
1387
+ command: z.ZodString;
1388
+ passed: z.ZodNumber;
1389
+ failed: z.ZodNumber;
1390
+ skipped: z.ZodNumber;
1391
+ }, z.core.$strip>>;
1392
+ deferredIssues: z.ZodOptional<z.ZodArray<z.ZodString>>;
1393
+ evidenceFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
1218
1394
  }, z.core.$strip>>;
1219
1395
  archNotes: z.ZodArray<z.ZodObject<{
1220
1396
  id: z.ZodString;
@@ -1559,6 +1735,22 @@ declare const ProjectStatusSchema: z.ZodEnum<{
1559
1735
  active: "active";
1560
1736
  archived: "archived";
1561
1737
  }>;
1738
+ /**
1739
+ * T202609230001:项目级 VCS 配置(门禁参数解析链第 2 级——任务级结构化字段优先)。
1740
+ * 全部可选:缺省形态=分支模型开启+repoPath 走 cwd 解析(本地单机即用,零迁移)。
1741
+ */
1742
+ declare const VcsConfigSchema: z.ZodObject<{
1743
+ enabled: z.ZodOptional<z.ZodBoolean>;
1744
+ baseBranch: z.ZodOptional<z.ZodString>;
1745
+ repoPath: z.ZodOptional<z.ZodString>;
1746
+ branchPattern: z.ZodOptional<z.ZodString>;
1747
+ worktreeMode: z.ZodOptional<z.ZodBoolean>;
1748
+ archiveToBase: z.ZodOptional<z.ZodBoolean>;
1749
+ docPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
1750
+ }, z.core.$strip>;
1751
+ type VcsConfig = z.infer<typeof VcsConfigSchema>;
1752
+ /** docPaths 缺省清单(B7 豁免:文档库/设计文档/临时目录/根级 markdown) */
1753
+ declare const DEFAULT_VCS_DOC_PATHS: readonly ["ProjectHub/", "docs/", "temp/", "*.md"];
1562
1754
  declare const ProjectSchema: z.ZodObject<{
1563
1755
  id: z.ZodOptional<z.ZodString>;
1564
1756
  key: z.ZodString;
@@ -1568,6 +1760,15 @@ declare const ProjectSchema: z.ZodObject<{
1568
1760
  active: "active";
1569
1761
  archived: "archived";
1570
1762
  }>>;
1763
+ vcs: z.ZodOptional<z.ZodObject<{
1764
+ enabled: z.ZodOptional<z.ZodBoolean>;
1765
+ baseBranch: z.ZodOptional<z.ZodString>;
1766
+ repoPath: z.ZodOptional<z.ZodString>;
1767
+ branchPattern: z.ZodOptional<z.ZodString>;
1768
+ worktreeMode: z.ZodOptional<z.ZodBoolean>;
1769
+ archiveToBase: z.ZodOptional<z.ZodBoolean>;
1770
+ docPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
1771
+ }, z.core.$strip>>;
1571
1772
  createdAt: z.ZodOptional<z.ZodDate>;
1572
1773
  updatedAt: z.ZodOptional<z.ZodDate>;
1573
1774
  }, z.core.$strip>;
@@ -1585,6 +1786,7 @@ declare const ProjectCreateSchema: z.ZodObject<{
1585
1786
  type ProjectCreate = z.infer<typeof ProjectCreateSchema>;
1586
1787
  /**
1587
1788
  * 更新输入:不含 key(key 是锚点字段,创建后不可变,F6 精神)。
1789
+ * vcs 经 exactOptionalPropertyTypes 逐字段构造(PATCH 透传,嵌套对象整体替换)。
1588
1790
  */
1589
1791
  declare const ProjectUpdateSchema: z.ZodObject<{
1590
1792
  name: z.ZodOptional<z.ZodString>;
@@ -1593,6 +1795,15 @@ declare const ProjectUpdateSchema: z.ZodObject<{
1593
1795
  active: "active";
1594
1796
  archived: "archived";
1595
1797
  }>>;
1798
+ vcs: z.ZodOptional<z.ZodObject<{
1799
+ enabled: z.ZodOptional<z.ZodBoolean>;
1800
+ baseBranch: z.ZodOptional<z.ZodString>;
1801
+ repoPath: z.ZodOptional<z.ZodString>;
1802
+ branchPattern: z.ZodOptional<z.ZodString>;
1803
+ worktreeMode: z.ZodOptional<z.ZodBoolean>;
1804
+ archiveToBase: z.ZodOptional<z.ZodBoolean>;
1805
+ docPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
1806
+ }, z.core.$strip>>;
1596
1807
  }, z.core.$strip>;
1597
1808
  type ProjectUpdate = z.infer<typeof ProjectUpdateSchema>;
1598
1809
 
@@ -1702,7 +1913,7 @@ declare function assertModelAliasExists(repo: ModelAliasRepo, code: string): Pro
1702
1913
  * - color:可选 UI 语义色 token(如 --success);
1703
1914
  * - order:下拉排序;builtin:内置值(禁删,D8);active:启停(禁用值下拉不可选,D8)。
1704
1915
  */
1705
- /** 注册表 category 白名单(D4:固定分类,不可增删)。T202608260002:agent_function 为第二个「schema 固定枚举权威 + registry 仅展示」双轨类(继 pause_type 先例) */
1916
+ /** 注册表 category 白名单(D4:固定分类,不可增删)。T202608260002:agent_function 为第二个「schema 固定枚举权威 + registry 仅展示」双轨类(继 pause_type 先例)。T202609230001 §12.6:tool_check_type 曾短暂入册后撤销——16 检查类型是 CLI CHECK_REGISTRY 固定实现映射非用户数据,说明能力内聚到 NodeChecksEditor 内置目录(不设枚举类目) */
1706
1917
  declare const EnumRegistryCategorySchema: z.ZodEnum<{
1707
1918
  scope: "scope";
1708
1919
  dag_phase: "dag_phase";
@@ -1767,7 +1978,7 @@ declare const EnumRegistryUpdateSchema: z.ZodObject<{
1767
1978
  type EnumRegistryUpdate = z.infer<typeof EnumRegistryUpdateSchema>;
1768
1979
 
1769
1980
  type EnumRegistryRepo = Repo<EnumRegistry> & {
1770
- /** 全量 8 类(SettingsPage 一次性加载;N017 删 gate_type 后收窄为 7 类,T202608260002 增 agent_function 复为 8 类) */
1981
+ /** 全量 9 类(SettingsPage 一次性加载;N017 删 gate_type,T202608260002 +agent_function,T202609150002 +issue_status;T202609230001 §12.6 tool_check_type 撤册——CLI 固定实现映射不设枚举类目) */
1771
1982
  listRegistries(): Promise<EnumRegistry[]>;
1772
1983
  /** 单类(按 category) */
1773
1984
  getRegistry(category: EnumRegistryCategory): Promise<EnumRegistry | null>;
@@ -1824,6 +2035,14 @@ declare const NodePresetShapeSchema: z.ZodObject<{
1824
2035
  source: z.ZodOptional<z.ZodObject<{
1825
2036
  package: z.ZodString;
1826
2037
  }, z.core.$strip>>;
2038
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2039
+ type: z.ZodString;
2040
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2041
+ }, z.core.$strip>>>;
2042
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2043
+ id: z.ZodString;
2044
+ item: z.ZodString;
2045
+ }, z.core.$strip>>>;
1827
2046
  enabled: z.ZodOptional<z.ZodBoolean>;
1828
2047
  createdAt: z.ZodOptional<z.ZodDate>;
1829
2048
  updatedAt: z.ZodOptional<z.ZodDate>;
@@ -1848,6 +2067,14 @@ declare const NodePresetSchema: z.ZodObject<{
1848
2067
  source: z.ZodOptional<z.ZodObject<{
1849
2068
  package: z.ZodString;
1850
2069
  }, z.core.$strip>>;
2070
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2071
+ type: z.ZodString;
2072
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2073
+ }, z.core.$strip>>>;
2074
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2075
+ id: z.ZodString;
2076
+ item: z.ZodString;
2077
+ }, z.core.$strip>>>;
1851
2078
  enabled: z.ZodOptional<z.ZodBoolean>;
1852
2079
  createdAt: z.ZodOptional<z.ZodDate>;
1853
2080
  updatedAt: z.ZodOptional<z.ZodDate>;
@@ -1869,10 +2096,18 @@ declare const NodePresetCreateSchema: z.ZodObject<{
1869
2096
  phase: z.ZodString;
1870
2097
  label: z.ZodString;
1871
2098
  prompt: z.ZodString;
1872
- nodeId: z.ZodString;
2099
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2100
+ type: z.ZodString;
2101
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2102
+ }, z.core.$strip>>>;
2103
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2104
+ id: z.ZodString;
2105
+ item: z.ZodString;
2106
+ }, z.core.$strip>>>;
1873
2107
  source: z.ZodOptional<z.ZodObject<{
1874
2108
  package: z.ZodString;
1875
2109
  }, z.core.$strip>>;
2110
+ nodeId: z.ZodString;
1876
2111
  skills: z.ZodDefault<z.ZodArray<z.ZodString>>;
1877
2112
  agents: z.ZodDefault<z.ZodArray<z.ZodString>>;
1878
2113
  version: z.ZodDefault<z.ZodString>;
@@ -1897,10 +2132,18 @@ declare const NodePresetUpdateSchema: z.ZodObject<{
1897
2132
  phase: z.ZodOptional<z.ZodString>;
1898
2133
  label: z.ZodOptional<z.ZodString>;
1899
2134
  prompt: z.ZodOptional<z.ZodString>;
1900
- nodeId: z.ZodOptional<z.ZodString>;
2135
+ toolChecks: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
2136
+ type: z.ZodString;
2137
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2138
+ }, z.core.$strip>>>>;
2139
+ aiChecks: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
2140
+ id: z.ZodString;
2141
+ item: z.ZodString;
2142
+ }, z.core.$strip>>>>;
1901
2143
  source: z.ZodOptional<z.ZodOptional<z.ZodObject<{
1902
2144
  package: z.ZodString;
1903
2145
  }, z.core.$strip>>>;
2146
+ nodeId: z.ZodOptional<z.ZodString>;
1904
2147
  version: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1905
2148
  }, z.core.$strip>;
1906
2149
  type NodePresetUpdate = z.infer<typeof NodePresetUpdateSchema>;
@@ -2509,6 +2752,14 @@ declare const TemplatePayloadSchema: z.ZodObject<{
2509
2752
  contentHash: z.ZodString;
2510
2753
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
2511
2754
  }, z.core.$strip>>;
2755
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2756
+ type: z.ZodString;
2757
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2758
+ }, z.core.$strip>>>;
2759
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2760
+ id: z.ZodString;
2761
+ item: z.ZodString;
2762
+ }, z.core.$strip>>>;
2512
2763
  }, z.core.$strip>>;
2513
2764
  edges: z.ZodArray<z.ZodObject<{
2514
2765
  from: z.ZodString;
@@ -2609,6 +2860,14 @@ declare const ExportBundleSchema: z.ZodObject<{
2609
2860
  contentHash: z.ZodString;
2610
2861
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
2611
2862
  }, z.core.$strip>>;
2863
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2864
+ type: z.ZodString;
2865
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2866
+ }, z.core.$strip>>>;
2867
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2868
+ id: z.ZodString;
2869
+ item: z.ZodString;
2870
+ }, z.core.$strip>>>;
2612
2871
  }, z.core.$strip>>;
2613
2872
  edges: z.ZodArray<z.ZodObject<{
2614
2873
  from: z.ZodString;
@@ -2699,6 +2958,14 @@ declare const ImportPlanRequestSchema: z.ZodObject<{
2699
2958
  contentHash: z.ZodString;
2700
2959
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
2701
2960
  }, z.core.$strip>>;
2961
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2962
+ type: z.ZodString;
2963
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
2964
+ }, z.core.$strip>>>;
2965
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2966
+ id: z.ZodString;
2967
+ item: z.ZodString;
2968
+ }, z.core.$strip>>>;
2702
2969
  }, z.core.$strip>>;
2703
2970
  edges: z.ZodArray<z.ZodObject<{
2704
2971
  from: z.ZodString;
@@ -2822,6 +3089,14 @@ declare const ImportApplyRequestSchema: z.ZodObject<{
2822
3089
  contentHash: z.ZodString;
2823
3090
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
2824
3091
  }, z.core.$strip>>;
3092
+ toolChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
3093
+ type: z.ZodString;
3094
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
3095
+ }, z.core.$strip>>>;
3096
+ aiChecks: z.ZodOptional<z.ZodArray<z.ZodObject<{
3097
+ id: z.ZodString;
3098
+ item: z.ZodString;
3099
+ }, z.core.$strip>>>;
2825
3100
  }, z.core.$strip>>;
2826
3101
  edges: z.ZodArray<z.ZodObject<{
2827
3102
  from: z.ZodString;
@@ -2997,11 +3272,11 @@ declare const ImportPlanResponseSchema: z.ZodObject<{
2997
3272
  }, z.core.$strip>;
2998
3273
  type ImportPlanResponse = z.infer<typeof ImportPlanResponseSchema>;
2999
3274
  declare const DependencyActionSchema: z.ZodEnum<{
3275
+ failed: "failed";
3000
3276
  skipped: "skipped";
3001
3277
  created: "created";
3002
3278
  identical: "identical";
3003
3279
  updated: "updated";
3004
- failed: "failed";
3005
3280
  }>;
3006
3281
  type DependencyAction = z.infer<typeof DependencyActionSchema>;
3007
3282
  declare const ImportApplyResponseSchema: z.ZodObject<{
@@ -3026,11 +3301,11 @@ declare const ImportApplyResponseSchema: z.ZodObject<{
3026
3301
  project: "project";
3027
3302
  }>>;
3028
3303
  action: z.ZodEnum<{
3304
+ failed: "failed";
3029
3305
  skipped: "skipped";
3030
3306
  created: "created";
3031
3307
  identical: "identical";
3032
3308
  updated: "updated";
3033
- failed: "failed";
3034
3309
  }>;
3035
3310
  message: z.ZodOptional<z.ZodString>;
3036
3311
  }, z.core.$strip>>;
@@ -3076,6 +3351,7 @@ declare const TaskPublicSchema: z.ZodObject<{
3076
3351
  "ui-tweak": "ui-tweak";
3077
3352
  research: "research";
3078
3353
  }>>;
3354
+ projectId: z.ZodString;
3079
3355
  currentNode: z.ZodString;
3080
3356
  currentPhase: z.ZodString;
3081
3357
  status: z.ZodString;
@@ -3092,6 +3368,14 @@ declare const NodeInfoSchema: z.ZodObject<{
3092
3368
  skills: z.ZodArray<z.ZodString>;
3093
3369
  agents: z.ZodArray<z.ZodString>;
3094
3370
  upcomingPause: z.ZodNullable<z.ZodString>;
3371
+ toolChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3372
+ type: z.ZodString;
3373
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
3374
+ }, z.core.$strip>>>;
3375
+ aiChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3376
+ id: z.ZodString;
3377
+ item: z.ZodString;
3378
+ }, z.core.$strip>>>;
3095
3379
  }, z.core.$strip>;
3096
3380
  type NodeInfo = z.infer<typeof NodeInfoSchema>;
3097
3381
  /** N017 D7:删 gate_failed 分支(union 收窄为 advanced / paused / completed);paused 分支 pausePoint 类型改 EdgePausePoint */
@@ -3106,6 +3390,7 @@ declare const AdvanceResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3106
3390
  "ui-tweak": "ui-tweak";
3107
3391
  research: "research";
3108
3392
  }>>;
3393
+ projectId: z.ZodString;
3109
3394
  currentNode: z.ZodString;
3110
3395
  currentPhase: z.ZodString;
3111
3396
  status: z.ZodString;
@@ -3120,6 +3405,14 @@ declare const AdvanceResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3120
3405
  skills: z.ZodArray<z.ZodString>;
3121
3406
  agents: z.ZodArray<z.ZodString>;
3122
3407
  upcomingPause: z.ZodNullable<z.ZodString>;
3408
+ toolChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3409
+ type: z.ZodString;
3410
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
3411
+ }, z.core.$strip>>>;
3412
+ aiChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3413
+ id: z.ZodString;
3414
+ item: z.ZodString;
3415
+ }, z.core.$strip>>>;
3123
3416
  }, z.core.$strip>;
3124
3417
  }, z.core.$strip>, z.ZodObject<{
3125
3418
  status: z.ZodLiteral<"paused">;
@@ -3132,6 +3425,7 @@ declare const AdvanceResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3132
3425
  "ui-tweak": "ui-tweak";
3133
3426
  research: "research";
3134
3427
  }>>;
3428
+ projectId: z.ZodString;
3135
3429
  currentNode: z.ZodString;
3136
3430
  currentPhase: z.ZodString;
3137
3431
  status: z.ZodString;
@@ -3158,6 +3452,7 @@ declare const AdvanceResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3158
3452
  "ui-tweak": "ui-tweak";
3159
3453
  research: "research";
3160
3454
  }>>;
3455
+ projectId: z.ZodString;
3161
3456
  currentNode: z.ZodString;
3162
3457
  currentPhase: z.ZodString;
3163
3458
  status: z.ZodString;
@@ -3177,6 +3472,7 @@ declare const ApproveResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3177
3472
  "ui-tweak": "ui-tweak";
3178
3473
  research: "research";
3179
3474
  }>>;
3475
+ projectId: z.ZodString;
3180
3476
  currentNode: z.ZodString;
3181
3477
  currentPhase: z.ZodString;
3182
3478
  status: z.ZodString;
@@ -3191,6 +3487,14 @@ declare const ApproveResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3191
3487
  skills: z.ZodArray<z.ZodString>;
3192
3488
  agents: z.ZodArray<z.ZodString>;
3193
3489
  upcomingPause: z.ZodNullable<z.ZodString>;
3490
+ toolChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3491
+ type: z.ZodString;
3492
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
3493
+ }, z.core.$strip>>>;
3494
+ aiChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3495
+ id: z.ZodString;
3496
+ item: z.ZodString;
3497
+ }, z.core.$strip>>>;
3194
3498
  }, z.core.$strip>;
3195
3499
  }, z.core.$strip>, z.ZodObject<{
3196
3500
  status: z.ZodLiteral<"rejected">;
@@ -3203,6 +3507,7 @@ declare const ApproveResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3203
3507
  "ui-tweak": "ui-tweak";
3204
3508
  research: "research";
3205
3509
  }>>;
3510
+ projectId: z.ZodString;
3206
3511
  currentNode: z.ZodString;
3207
3512
  currentPhase: z.ZodString;
3208
3513
  status: z.ZodString;
@@ -3221,6 +3526,7 @@ declare const ApproveResponseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3221
3526
  "ui-tweak": "ui-tweak";
3222
3527
  research: "research";
3223
3528
  }>>;
3529
+ projectId: z.ZodString;
3224
3530
  currentNode: z.ZodString;
3225
3531
  currentPhase: z.ZodString;
3226
3532
  status: z.ZodString;
@@ -3442,6 +3748,14 @@ declare const CreateTaskResponseSchema: z.ZodObject<{
3442
3748
  skills: z.ZodArray<z.ZodString>;
3443
3749
  agents: z.ZodArray<z.ZodString>;
3444
3750
  upcomingPause: z.ZodNullable<z.ZodString>;
3751
+ toolChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3752
+ type: z.ZodString;
3753
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
3754
+ }, z.core.$strip>>>;
3755
+ aiChecks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3756
+ id: z.ZodString;
3757
+ item: z.ZodString;
3758
+ }, z.core.$strip>>>;
3445
3759
  }, z.core.$strip>;
3446
3760
  }, z.core.$strip>;
3447
3761
  type CreateTaskResponse = z.infer<typeof CreateTaskResponseSchema>;
@@ -3804,6 +4118,9 @@ interface UpgradePlanItem {
3804
4118
  added: string[];
3805
4119
  removed: string[];
3806
4120
  } | null;
4121
+ /** T202609230001:门禁声明差异可见性(plan 展示用;不参与 contentHash——见 D「hash 残余」声明) */
4122
+ toolChecks: 'changed' | null;
4123
+ aiChecks: 'changed' | null;
3807
4124
  };
3808
4125
  }
3809
4126
  interface UpgradePlanResult {
@@ -4097,4 +4414,4 @@ declare function applyImport(deps: TemplateTransferDeps, targetProjectId: string
4097
4414
  declare const VERSION: string;
4098
4415
  declare function ping(): string;
4099
4416
 
4100
- export { AGENT_MAIN_DOC, ARTIFACT_TYPES, AUTH_COLLECTIONS, type AdvanceDeps, type AdvanceInput, type AdvanceRequest, AdvanceRequestSchema, type AdvanceResponse, AdvanceResponseSchema, type Agent, type AgentCopy, AgentCopySchema, type AgentCreate, AgentCreateSchema, type AgentFunction, AgentFunctionSchema, type AgentPayload, AgentPayloadSchema, type AgentRepo, AgentSchema, type AgentScope, AgentScopeSchema, AgentShapeSchema, type AgentUpdate, AgentUpdateSchema, AppError, type AppErrorOptions, type ApproveRequest, ApproveRequestSchema, type ApproveResponse, ApproveResponseSchema, type ArchNote, ArchNoteSchema, type Artifact, ArtifactSchema, type ArtifactType, type AssetListOpts, type AssetSetEnabled, AssetSetEnabledSchema, type AuthAccount, type AuthAccountCreate, AuthAccountCreateSchema, AuthAccountSchema, type AuthSession, type AuthStatus, AuthStatusSchema, type AuthToken, type AuthTokenGenResponse, AuthTokenGenResponseSchema, type AuthTokenKind, AuthTokenSchema, type AuthTokenStatus, AuthTokenStatusSchema, type AuthTokenType, AuthTokenTypeSchema, type AuthWhoami, AuthWhoamiSchema, BIZ_CODE_MESSAGES, BadRequestError, type BizCode, CONTEXT_VIEWS, type CancelRequest, CancelRequestSchema, type CheckItem, CheckItemSchema, type Composition, type CompositionEdge, CompositionEdgeSchema, CompositionSchema, type Confirmation, ConfirmationSchema, ConflictError, type ContextView, ContextViewSchema, type ConvertGroupOutcome, type CreateTaskResponse, CreateTaskResponseSchema, DAG_PHASES, DAG_TRACKS, DEFAULT_PROJECT_KEY, type DagEdge, DagEdgeSchema, type DagInstance, type DagInstanceNode, DagInstanceNodeSchema, DagInstanceSchema, type DagNode, DagNodePhaseSchema, DagNodeSchema, DagNodeTrackSchema, type DagTemplate, type DagTemplateCopy, DagTemplateCopySchema, type DagTemplateCreate, DagTemplateCreateSchema, type DagTemplateRepo, DagTemplateSchema, type DagTemplateUpdate, DagTemplateUpdateSchema, type Decision, DecisionSchema, type DependencyAction, DependencyActionSchema, type DependencyCheck, DependencyCheckSchema, type DependencyStatus, DependencyStatusSchema, ENTRY_ID_REGEX, EXPORT_FORMAT_VERSION, type EchoItem, EchoItemSchema, type EdgePausePoint, EdgePausePointBaseSchema, EdgePausePointSchema, type EnumEntry, EnumEntrySchema, type EnumRegistry, type EnumRegistryCategory, EnumRegistryCategorySchema, type EnumRegistryRepo, EnumRegistrySchema, type EnumRegistryUpdate, EnumRegistryUpdateSchema, type ExportBundle, ExportBundleSchema, ForbiddenError, HistoryActionSchema, type HistoryEntry, HistoryEntrySchema, ISSUE_ACTIVE_STATUSES, ISSUE_CONVERT_MODES, ISSUE_SOURCES, ISSUE_STATUSES, type ImportApplyRequest, ImportApplyRequestSchema, type ImportApplyResponse, ImportApplyResponseSchema, type ImportDecision, ImportDecisionSchema, type ImportPlanRequest, ImportPlanRequestSchema, type ImportPlanResponse, ImportPlanResponseSchema, type Issue, type IssueConvertMode, IssueConvertModeSchema, type IssueCreate, IssueCreateSchema, type IssueHistoryEntry, IssueHistoryEntrySchema, type IssueListFilter, type IssueProgress, IssueProgressSchema, type IssueRepo, IssueSchema, type IssueSource, IssueSourceSchema, type IssueStatus, type IssueStatusChange, IssueStatusSchema, type IssueTaskSnapshot, type IssueUpdate, IssueUpdateSchema, type IssueWithProgress, type LoginInput, LoginSchema, type ModelAlias, type ModelAliasCreate, ModelAliasCreateSchema, type ModelAliasPayload, ModelAliasPayloadSchema, type ModelAliasRepo, ModelAliasSchema, ModelAliasShapeSchema, type ModelAliasUpdate, ModelAliasUpdateSchema, type ModelAliasWithRefCount, ModelAliasWithRefCountSchema, NODE_ID_PATTERN, NODE_PRESET_CODE_PATTERN, NODE_STATUSES, type NodeContentFields, type NodeInfo, NodeInfoSchema, type NodeLibrary, type NodeLibraryRepo, NodeLibrarySchema, type NodeLibraryUpsert, NodeLibraryUpsertSchema, type NodePreset, type NodePresetCopy, NodePresetCopySchema, type NodePresetCreate, NodePresetCreateSchema, type NodePresetListFilter, type NodePresetRepo, NodePresetSchema, NodePresetShapeSchema, type NodePresetUpdate, NodePresetUpdateSchema, type NodeRecord, NodeRecordSchema, type NodeState, NodeStateSchema, NodeStatusSchema, NotFoundError, OBJECT_ID_HEX, type OmitId, PAUSE_POINT_TYPES, type PasswordChange, PasswordChangeSchema, PausePointTypeSchema, type PauseRequest, PauseRequestSchema, type Project, type ProjectCreate, ProjectCreateSchema, type ProjectRepo, ProjectSchema, type ProjectStatus, ProjectStatusSchema, type ProjectUpdate, ProjectUpdateSchema, type PruneResult, REFERENCE_LIMITS, type ReferenceDoc, type ReopenInput, type ReopenRequest, ReopenRequestSchema, type ReopenResponse, type Repo, type ResumeRequest, ResumeRequestSchema, type ReviewSummary, ReviewSummarySchema, SIMING_CODE_REGEX, SIMING_CONFIG_ENV_KEYS, SIMING_CONFIG_KEYS, SKILL_MAIN_DOC, type SimingClient, type SimingConfig, type SimingConfigKey, SimingConfigSchema, SimingLogLevelSchema, type Skill, type SkillCopy, SkillCopySchema, type SkillCreate, SkillCreateSchema, type SkillPayload, SkillPayloadSchema, type SkillRepo, SkillSchema, type SkillScope, SkillScopeSchema, SkillShapeSchema, type SkillUpdate, SkillUpdateSchema, type SourcePreset, SourcePresetSchema, TASK_PHASES, TASK_STATUSES, TASK_TYPES, TEMPLATE_CODE_MAX_LENGTH, TEMPLATE_CODE_REGEX, type Task, type TaskBatchAck, TaskBatchAckSchema, type TaskBatchEntry, TaskBatchEntrySchema, type TaskBatchFailure, TaskBatchFailureSchema, type TaskContext, TaskContextSchema, type TaskCreateInput, TaskCreateInputSchema, type TaskDocContent, TaskDocContentSchema, type TaskIssueView, type TaskLink, TaskLinkSchema, type TaskPatch, TaskPhaseSchema, type TaskProgress, type TaskProgressPublic, TaskProgressPublicSchema, TaskProgressSchema, type TaskPublic, TaskPublicSchema, type TaskRepo, TaskSchema, TaskStatusSchema, type TaskSummary, TaskSummarySchema, type TaskType, type TemplateCandidate, TemplateCandidateSchema, TemplateCodeFieldSchema, type TemplateContentChanges, type TemplateContentDiff, type TemplateContentSource, type TemplatePayload, TemplatePayloadSchema, type TemplateTransferDeps, UnauthorizedError, type UpgradeAction, UpgradeActionSchema, type UpgradeApplyOutcome, type UpgradeApplyRequest, UpgradeApplyRequestSchema, type UpgradeApplyResultItem, type UpgradeDecision, type UpgradeDecisionInput, UpgradeDecisionSchema, type UpgradeNodeStatus, UpgradeNodeStatusSchema, type UpgradePlanItem, type UpgradePlanResult, VERSION, ValidationError, WRITE_ACK_ENTRY_KINDS, type WithId, type WriteAck, type WriteAckEntryKind, WriteAckEntryKindSchema, WriteAckSchema, advanceTask, applyImport, applyUpgradeDecisions, approveTask, assertBoundSkillsCompatible, assertModelAliasExists, assertReferenceAggregateLimit, assertReferencesDeletable, assertUniqueNodeIds, buildImportPlan, buildTemplateCode, buildUpgradePlan, bumpPatch, bumpPatchOrPassthrough, cancelTask, canonicalizeReferencePath, checkTermination, composeExportBundle, computeNodeContentHash, computeUpgradeStatus, createAgentRepo, createAuthAccountRepo, createAuthSessionRepo, createAuthTokenRepo, createDagTemplateRepo, createEnumRegistryRepo, createIssueRepo, createModelAliasRepo, createMongoClient, createNodeLibraryRepo, createNodePresetRepo, createProjectRepo, createReferencesSchema, createRepo, createSkillRepo, createTaskRepo, decisionKey, derivePreTerminalState, diffTemplateContent, enabledNeFalse, escapeRegExpLiteral, excerpt, findDuplicateNodeIds, findNextEdge, findTemplateByName, generateEntryId, generateProjectKey, generateSessionId, generateToken, hasProjectDefault, hashPassword, hashToken, isLegalTemplateCode, mkHistory, normalizeNameToTemplateCode, parseAuthEnabledEnvValue, pauseTask, ping, pruneInstance, renderPrompt, reopenTask, resumeTask, sumReferenceContentChars, taskProgress, toNodeInfo, toTaskPublic, tokenTypeFromValue, trackMatchSet, verifyPassword, withTransaction };
4417
+ export { AGENT_MAIN_DOC, ARTIFACT_TYPES, AUTH_COLLECTIONS, type AdvanceDeps, type AdvanceInput, type AdvanceRequest, AdvanceRequestSchema, type AdvanceResponse, AdvanceResponseSchema, type Agent, type AgentCopy, AgentCopySchema, type AgentCreate, AgentCreateSchema, type AgentFunction, AgentFunctionSchema, type AgentPayload, AgentPayloadSchema, type AgentRepo, AgentSchema, type AgentScope, AgentScopeSchema, AgentShapeSchema, type AgentUpdate, AgentUpdateSchema, type AiCheck, AiCheckSchema, AppError, type AppErrorOptions, type ApproveRequest, ApproveRequestSchema, type ApproveResponse, ApproveResponseSchema, type ArchNote, ArchNoteSchema, type Artifact, ArtifactSchema, type ArtifactType, type AssetListOpts, type AssetSetEnabled, AssetSetEnabledSchema, type AuthAccount, type AuthAccountCreate, AuthAccountCreateSchema, AuthAccountSchema, type AuthSession, type AuthStatus, AuthStatusSchema, type AuthToken, type AuthTokenGenResponse, AuthTokenGenResponseSchema, type AuthTokenKind, AuthTokenSchema, type AuthTokenStatus, AuthTokenStatusSchema, type AuthTokenType, AuthTokenTypeSchema, type AuthWhoami, AuthWhoamiSchema, BIZ_CODE_MESSAGES, BadRequestError, type BizCode, CONTEXT_VIEWS, type CancelRequest, CancelRequestSchema, type CheckItem, CheckItemSchema, type Composition, type CompositionEdge, CompositionEdgeSchema, CompositionSchema, type Confirmation, ConfirmationSchema, ConflictError, type ContextView, ContextViewSchema, type ConvertGroupOutcome, type CreateTaskResponse, CreateTaskResponseSchema, DAG_PHASES, DAG_TRACKS, DEFAULT_PROJECT_KEY, DEFAULT_VCS_DOC_PATHS, type DagEdge, DagEdgeSchema, type DagInstance, type DagInstanceNode, DagInstanceNodeSchema, DagInstanceSchema, type DagNode, DagNodePhaseSchema, DagNodeSchema, DagNodeTrackSchema, type DagTemplate, type DagTemplateCopy, DagTemplateCopySchema, type DagTemplateCreate, DagTemplateCreateSchema, type DagTemplateRepo, DagTemplateSchema, type DagTemplateUpdate, DagTemplateUpdateSchema, type Decision, DecisionSchema, type DependencyAction, DependencyActionSchema, type DependencyCheck, DependencyCheckSchema, type DependencyStatus, DependencyStatusSchema, ENTRY_ID_REGEX, EXPORT_FORMAT_VERSION, type EchoItem, EchoItemSchema, type EdgePausePoint, EdgePausePointBaseSchema, EdgePausePointSchema, type EnumEntry, EnumEntrySchema, type EnumRegistry, type EnumRegistryCategory, EnumRegistryCategorySchema, type EnumRegistryRepo, EnumRegistrySchema, type EnumRegistryUpdate, EnumRegistryUpdateSchema, type ExportBundle, ExportBundleSchema, ForbiddenError, HistoryActionSchema, type HistoryEntry, HistoryEntrySchema, ISSUE_ACTIVE_STATUSES, ISSUE_CONVERT_MODES, ISSUE_SOURCES, ISSUE_STATUSES, type ImportApplyRequest, ImportApplyRequestSchema, type ImportApplyResponse, ImportApplyResponseSchema, type ImportDecision, ImportDecisionSchema, type ImportPlanRequest, ImportPlanRequestSchema, type ImportPlanResponse, ImportPlanResponseSchema, type Issue, type IssueConvertMode, IssueConvertModeSchema, type IssueCreate, IssueCreateSchema, type IssueHistoryEntry, IssueHistoryEntrySchema, type IssueListFilter, type IssueProgress, IssueProgressSchema, type IssueRepo, IssueSchema, type IssueSource, IssueSourceSchema, type IssueStatus, type IssueStatusChange, IssueStatusSchema, type IssueTaskSnapshot, type IssueUpdate, IssueUpdateSchema, type IssueWithProgress, type LoginInput, LoginSchema, type ModelAlias, type ModelAliasCreate, ModelAliasCreateSchema, type ModelAliasPayload, ModelAliasPayloadSchema, type ModelAliasRepo, ModelAliasSchema, ModelAliasShapeSchema, type ModelAliasUpdate, ModelAliasUpdateSchema, type ModelAliasWithRefCount, ModelAliasWithRefCountSchema, NODE_CHECKS_MAX, NODE_ID_PATTERN, NODE_PRESET_CODE_PATTERN, NODE_STATUSES, type NodeContentFields, type NodeInfo, NodeInfoSchema, type NodeLibrary, type NodeLibraryRepo, NodeLibrarySchema, type NodeLibraryUpsert, NodeLibraryUpsertSchema, type NodePreset, type NodePresetCopy, NodePresetCopySchema, type NodePresetCreate, NodePresetCreateSchema, type NodePresetListFilter, type NodePresetRepo, NodePresetSchema, NodePresetShapeSchema, type NodePresetUpdate, NodePresetUpdateSchema, type NodeRecord, NodeRecordSchema, type NodeState, NodeStateSchema, NodeStatusSchema, NotFoundError, OBJECT_ID_HEX, type OmitId, PAUSE_POINT_TYPES, type PasswordChange, PasswordChangeSchema, PausePointTypeSchema, type PauseRequest, PauseRequestSchema, type Project, type ProjectCreate, ProjectCreateSchema, type ProjectRepo, ProjectSchema, type ProjectStatus, ProjectStatusSchema, type ProjectUpdate, ProjectUpdateSchema, type PruneResult, REFERENCE_LIMITS, type ReferenceDoc, type ReopenInput, type ReopenRequest, ReopenRequestSchema, type ReopenResponse, type Repo, type ResumeRequest, ResumeRequestSchema, type ReviewSummary, ReviewSummarySchema, SIMING_CODE_REGEX, SIMING_CONFIG_ENV_KEYS, SIMING_CONFIG_KEYS, SKILL_MAIN_DOC, type SimingClient, type SimingConfig, type SimingConfigKey, SimingConfigSchema, SimingLogLevelSchema, type Skill, type SkillCopy, SkillCopySchema, type SkillCreate, SkillCreateSchema, type SkillPayload, SkillPayloadSchema, type SkillRepo, SkillSchema, type SkillScope, SkillScopeSchema, SkillShapeSchema, type SkillUpdate, SkillUpdateSchema, type SourcePreset, SourcePresetSchema, TASK_PHASES, TASK_STATUSES, TASK_TYPES, TEMPLATE_CODE_MAX_LENGTH, TEMPLATE_CODE_REGEX, type Task, type TaskBatchAck, TaskBatchAckSchema, type TaskBatchEntry, TaskBatchEntrySchema, type TaskBatchFailure, TaskBatchFailureSchema, type TaskContext, TaskContextSchema, type TaskCreateInput, TaskCreateInputSchema, type TaskDocContent, TaskDocContentSchema, type TaskIssueView, type TaskLink, TaskLinkSchema, type TaskPatch, TaskPhaseSchema, type TaskProgress, type TaskProgressPublic, TaskProgressPublicSchema, TaskProgressSchema, type TaskPublic, TaskPublicSchema, type TaskRepo, TaskSchema, TaskStatusSchema, type TaskSummary, TaskSummarySchema, type TaskType, type TemplateCandidate, TemplateCandidateSchema, TemplateCodeFieldSchema, type TemplateContentChanges, type TemplateContentDiff, type TemplateContentSource, type TemplatePayload, TemplatePayloadSchema, type TemplateTransferDeps, type TestReport, TestReportSchema, type ToolCheck, ToolCheckSchema, UnauthorizedError, type UpgradeAction, UpgradeActionSchema, type UpgradeApplyOutcome, type UpgradeApplyRequest, UpgradeApplyRequestSchema, type UpgradeApplyResultItem, type UpgradeDecision, type UpgradeDecisionInput, UpgradeDecisionSchema, type UpgradeNodeStatus, UpgradeNodeStatusSchema, type UpgradePlanItem, type UpgradePlanResult, VERSION, ValidationError, type VcsConfig, VcsConfigSchema, WRITE_ACK_ENTRY_KINDS, type WithId, type WriteAck, type WriteAckEntryKind, WriteAckEntryKindSchema, WriteAckSchema, advanceTask, applyImport, applyUpgradeDecisions, approveTask, assertBoundSkillsCompatible, assertModelAliasExists, assertReferenceAggregateLimit, assertReferencesDeletable, assertUniqueAiCheckIds, assertUniqueNodeIds, buildImportPlan, buildTemplateCode, buildUpgradePlan, bumpPatch, bumpPatchOrPassthrough, cancelTask, canonicalizeReferencePath, checkTermination, composeExportBundle, computeNodeContentHash, computeUpgradeStatus, createAgentRepo, createAuthAccountRepo, createAuthSessionRepo, createAuthTokenRepo, createDagTemplateRepo, createEnumRegistryRepo, createIssueRepo, createModelAliasRepo, createMongoClient, createNodeLibraryRepo, createNodePresetRepo, createProjectRepo, createReferencesSchema, createRepo, createSkillRepo, createTaskRepo, decisionKey, derivePreTerminalState, diffTemplateContent, enabledNeFalse, escapeRegExpLiteral, excerpt, findDuplicateNodeIds, findNextEdge, findTemplateByName, generateEntryId, generateProjectKey, generateSessionId, generateToken, hasProjectDefault, hashPassword, hashToken, isLegalTemplateCode, mkHistory, normalizeNameToTemplateCode, parseAuthEnabledEnvValue, pauseTask, ping, pruneInstance, renderPrompt, reopenTask, resumeTask, sumReferenceContentChars, taskProgress, toNodeInfo, toTaskPublic, tokenTypeFromValue, trackMatchSet, verifyPassword, withTransaction };
package/dist/index.js CHANGED
@@ -732,6 +732,26 @@ var SourcePresetSchema = z3.object({
732
732
  /** Agent 名称独立基线;不改变既有 contentHash 算法,存量缺键按空清单比较 */
733
733
  agents: capabilityNamesSchema.optional()
734
734
  });
735
+ var ToolCheckSchema = z3.object({
736
+ type: z3.string().min(1).max(50).regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, "toolCheck.type \u5FC5\u987B\u4E3A kebab-case \u6CE8\u518C\u8868\u952E"),
737
+ params: z3.record(z3.string(), z3.union([z3.string(), z3.number(), z3.boolean()])).optional()
738
+ });
739
+ var AiCheckSchema = z3.object({
740
+ id: z3.string().min(2).max(30).regex(/^[a-z0-9-]+$/, "aiCheck.id \u53EA\u5141\u8BB8\u5C0F\u5199\u5B57\u6BCD/\u6570\u5B57/\u8FDE\u5B57\u7B26"),
741
+ item: z3.string().min(1).max(200)
742
+ });
743
+ var NODE_CHECKS_MAX = 20;
744
+ function assertUniqueAiCheckIds(nodes) {
745
+ for (const node of nodes) {
746
+ const seen = /* @__PURE__ */ new Set();
747
+ for (const check of node.aiChecks ?? []) {
748
+ if (seen.has(check.id)) {
749
+ throw new Error(`\u8282\u70B9 ${node.id} \u7684 aiCheck id \u91CD\u590D\uFF1A${check.id}\uFF08\u8282\u70B9\u5185\u987B\u552F\u4E00\uFF0CrefId \u5339\u914D\u4F9D\u8D56\uFF09`);
750
+ }
751
+ seen.add(check.id);
752
+ }
753
+ }
754
+ }
735
755
  var DagNodeSchema = z3.object({
736
756
  id: z3.string().regex(NODE_ID_PATTERN, "node id \u53EA\u5141\u8BB8\u5B57\u6BCD/\u6570\u5B57/\u4E0B\u5212\u7EBF/\u8FDE\u5B57\u7B26\uFF08\u70B9\u8DEF\u5F84\u62FC\u63A5\u5B89\u5168\u524D\u63D0\uFF09"),
737
757
  label: z3.string(),
@@ -741,7 +761,11 @@ var DagNodeSchema = z3.object({
741
761
  skills: capabilityNamesSchema.default([]),
742
762
  /** 存量模板允许缺键;新组装和任务实例化路径写入完整数组 */
743
763
  agents: capabilityNamesSchema.optional(),
744
- sourcePreset: SourcePresetSchema.optional()
764
+ sourcePreset: SourcePresetSchema.optional(),
765
+ /** T202609230001:工具类门禁声明(可选——存量模板/任务零迁移,读侧 ?? [] 归一) */
766
+ toolChecks: z3.array(ToolCheckSchema).max(NODE_CHECKS_MAX).optional(),
767
+ /** T202609230001:AI 自检项声明(同上,值拷贝进任务实例随资料包分发) */
768
+ aiChecks: z3.array(AiCheckSchema).max(NODE_CHECKS_MAX).optional()
745
769
  });
746
770
  var PausePointTypeSchema = z3.enum(["human_approval", "checkpoint"]);
747
771
  var PAUSE_POINT_TYPES = ["human_approval", "checkpoint"];
@@ -1046,7 +1070,9 @@ var ENTRY_ID_REGEX = /^[a-z0-9]{6}$/;
1046
1070
  var CheckItemSchema = z4.object({
1047
1071
  id: z4.string().regex(ENTRY_ID_REGEX),
1048
1072
  item: z4.string().min(1),
1049
- passed: z4.boolean()
1073
+ passed: z4.boolean(),
1074
+ source: z4.enum(["self", "tool"]).optional(),
1075
+ refId: z4.string().min(2).max(30).optional()
1050
1076
  });
1051
1077
  var ARTIFACT_TYPES = ["prd", "tech", "code", "test", "doc", "other"];
1052
1078
  var ArtifactSchema = z4.object({
@@ -1071,13 +1097,25 @@ var ReviewSummarySchema = z4.object({
1071
1097
  rounds: z4.number().int().min(1),
1072
1098
  critical: z4.number().int().min(0)
1073
1099
  });
1100
+ var TestReportSchema = z4.object({
1101
+ command: z4.string().min(1).max(200),
1102
+ passed: z4.number().int().min(0),
1103
+ failed: z4.number().int().min(0),
1104
+ skipped: z4.number().int().min(0)
1105
+ });
1074
1106
  var NodeRecordSchema = z4.object({
1075
1107
  summary: z4.string().optional(),
1076
1108
  checks: z4.array(CheckItemSchema).default([]),
1077
1109
  artifacts: z4.array(ArtifactSchema).default([]),
1078
1110
  confirmations: z4.array(ConfirmationSchema).default([]),
1079
1111
  decisions: z4.array(DecisionSchema).default([]),
1080
- review: ReviewSummarySchema.optional()
1112
+ review: ReviewSummarySchema.optional(),
1113
+ baseBranch: z4.string().min(1).max(50).optional(),
1114
+ verifiedCommit: z4.string().min(7).max(40).optional(),
1115
+ fixesApplied: z4.number().int().min(0).optional(),
1116
+ testReport: TestReportSchema.optional(),
1117
+ deferredIssues: z4.array(z4.string()).max(20).optional(),
1118
+ evidenceFiles: z4.array(z4.string()).max(50).optional()
1081
1119
  });
1082
1120
  var TaskDocContentSchema = z4.object({
1083
1121
  what: z4.string().min(1),
@@ -1106,7 +1144,10 @@ var DagInstanceNodeSchema = z4.object({
1106
1144
  track: z4.string(),
1107
1145
  prompt: z4.string(),
1108
1146
  skills: z4.array(z4.string()).default([]),
1109
- agents: z4.array(z4.string()).default([])
1147
+ agents: z4.array(z4.string()).default([]),
1148
+ // T202609230001:门禁配置快照(创建时值拷贝——模板升版不回溯在途任务,行为可预期)
1149
+ toolChecks: z4.array(ToolCheckSchema).optional(),
1150
+ aiChecks: z4.array(AiCheckSchema).optional()
1110
1151
  });
1111
1152
  var DagInstanceSchema = z4.object({
1112
1153
  templateId: z4.string(),
@@ -1122,7 +1163,7 @@ var DagInstanceSchema = z4.object({
1122
1163
  prunedNodes: z4.array(z4.string()),
1123
1164
  nodeStates: z4.record(z4.string(), NodeStateSchema)
1124
1165
  });
1125
- var HistoryActionSchema = z4.enum(["entered", "advanced", "paused", "resumed", "approved", "rejected", "completed", "cancelled", "reopened"]);
1166
+ var HistoryActionSchema = z4.enum(["entered", "advanced", "paused", "resumed", "approved", "rejected", "completed", "cancelled", "reopened", "checks_rejected"]);
1126
1167
  var HistoryEntrySchema = z4.object({
1127
1168
  nodeId: z4.string(),
1128
1169
  action: HistoryActionSchema,
@@ -1629,6 +1670,8 @@ function toTaskPublic(task) {
1629
1670
  title: task.title,
1630
1671
  // T202608240003:type 进 context/advance 公共投影(模板 PRD 调研变体判定依赖 context 可见)
1631
1672
  ...task.type !== void 0 ? { type: task.type } : {},
1673
+ // T202609230001:projectId 进公共投影(advance 门禁读项目 vcs 配置;实体层恒有值——N012 去哨兵)
1674
+ projectId: task.projectId,
1632
1675
  currentNode: task.currentNode,
1633
1676
  currentPhase: task.currentPhase,
1634
1677
  status: task.status,
@@ -1650,7 +1693,10 @@ function toNodeInfo(node, task) {
1650
1693
  prompt: renderPrompt(node.prompt, task),
1651
1694
  skills: node.skills,
1652
1695
  agents: node.agents ?? [],
1653
- upcomingPause: nextEdge?.pausePoint?.description ?? null
1696
+ upcomingPause: nextEdge?.pausePoint?.description ?? null,
1697
+ // T202609230001:门禁项注入(?? [] 归一——存量节点缺字段时响应恒为数组)
1698
+ toolChecks: node.toolChecks ?? [],
1699
+ aiChecks: node.aiChecks ?? []
1654
1700
  };
1655
1701
  }
1656
1702
  function mkHistory(nodeId, action, details) {
@@ -2035,7 +2081,10 @@ function deepCopyNode(node) {
2035
2081
  track: node.track,
2036
2082
  prompt: node.prompt,
2037
2083
  skills: [...node.skills],
2038
- agents: [...node.agents ?? []]
2084
+ agents: [...node.agents ?? []],
2085
+ // T202609230001:门禁配置快照(显式枚举拷贝——不同步即丢,浅拷贝数组与 skills 同范式)
2086
+ ...node.toolChecks ? { toolChecks: node.toolChecks.map((c) => c.params ? { ...c, params: { ...c.params } } : { ...c }) } : {},
2087
+ ...node.aiChecks ? { aiChecks: node.aiChecks.map((c) => ({ ...c })) } : {}
2039
2088
  };
2040
2089
  }
2041
2090
  function deepCopyEdge(edge) {
@@ -3294,6 +3343,8 @@ var TaskPublicSchema = z10.object({
3294
3343
  title: z10.string(),
3295
3344
  // T202608240003:任务类型标签(缺省 = 裸任务/旧任务;模板 PRD 调研变体判定消费)
3296
3345
  type: z10.enum(TASK_TYPES).optional(),
3346
+ /** T202609230001:归属项目(CLI advance 门禁经 context 直取 projectId 读项目 vcs 配置,免额外实体查询) */
3347
+ projectId: z10.string(),
3297
3348
  currentNode: z10.string(),
3298
3349
  currentPhase: z10.string(),
3299
3350
  status: z10.string(),
@@ -3307,7 +3358,13 @@ var NodeInfoSchema = z10.object({
3307
3358
  prompt: z10.string(),
3308
3359
  skills: z10.array(z10.string()),
3309
3360
  agents: z10.array(z10.string()),
3310
- upcomingPause: z10.string().nullable()
3361
+ upcomingPause: z10.string().nullable(),
3362
+ /**
3363
+ * T202609230001:门禁项随资料包注入(四响应单源 toNodeInfo)——响应恒为数组(?? [] 归一),
3364
+ * 每节点注入即红线自动重申(对抗长上下文漂移);AI 据此先自检后推进。
3365
+ */
3366
+ toolChecks: z10.array(ToolCheckSchema).default([]),
3367
+ aiChecks: z10.array(AiCheckSchema).default([])
3311
3368
  });
3312
3369
  var AdvanceResponseSchema = z10.discriminatedUnion("status", [
3313
3370
  z10.object({
@@ -3365,6 +3422,8 @@ var TaskContextSchema = z11.object({
3365
3422
  title: z11.string(),
3366
3423
  // T202608240003:与 TaskPublicSchema 同步(toTaskPublic 运行时已产出,schema 声明漂移会导致 typed 消费方 strip 掉 type)
3367
3424
  type: z11.enum(TASK_TYPES).optional(),
3425
+ // T202609230001:与 TaskPublicSchema 同步(advance 门禁读项目 vcs 配置依赖)
3426
+ projectId: z11.string(),
3368
3427
  currentNode: z11.string(),
3369
3428
  currentPhase: z11.string(),
3370
3429
  status: z11.string(),
@@ -3381,7 +3440,13 @@ var TaskContextSchema = z11.object({
3381
3440
  skills: z11.array(z11.string()),
3382
3441
  agents: z11.array(z11.string()),
3383
3442
  /** 完成当前节点后出边上的暂停点描述(经 findNextEdge 按轨选边) */
3384
- upcomingPause: z11.string().nullable()
3443
+ upcomingPause: z11.string().nullable(),
3444
+ /**
3445
+ * T202609230001:门禁项注入(与 NodeInfoSchema 同步的内联镜像——CLI 侧
3446
+ * TaskContext['currentNode'] 类型取门禁项供 advance 前置校验消费)。
3447
+ */
3448
+ toolChecks: z11.array(ToolCheckSchema).default([]),
3449
+ aiChecks: z11.array(AiCheckSchema).default([])
3385
3450
  }).nullable(),
3386
3451
  pausedAtEdge: z11.object({
3387
3452
  from: z11.string(),
@@ -3396,6 +3461,12 @@ var TaskContextSchema = z11.object({
3396
3461
  enteredAt: z11.date().nullable(),
3397
3462
  completedAt: z11.date().nullable()
3398
3463
  })),
3464
+ /**
3465
+ * T202609230001:实例有向边表(B6 前序闭包判定数据源——「前序」按 DAG 拓扑而非列表序,
3466
+ * 后继 pending 节点不算前序)。旧 server 不携带 → 客户端 ?? [] 兜底(闭包为空 = 不拦截,
3467
+ * 老组合形态本就无门禁,不构成静默放行新增面)。
3468
+ */
3469
+ edges: z11.array(z11.object({ from: z11.string(), to: z11.string() })).default([]),
3399
3470
  /** N020 D1:任务级结构化文档(未写时 null) */
3400
3471
  taskDoc: TaskDocContentSchema.nullable(),
3401
3472
  /** N020 D1:节点执行记录(仅含已写记录的 nodeId) */
@@ -3495,12 +3566,30 @@ var ContextViewSchema = z12.enum(CONTEXT_VIEWS);
3495
3566
  // src/schemas/project.ts
3496
3567
  import { z as z13 } from "zod";
3497
3568
  var ProjectStatusSchema = z13.enum(["active", "archived"]);
3569
+ var VcsConfigSchema = z13.object({
3570
+ /** false=项目级豁免:全部 git 类检查 N/A(纯文档/无分支模型项目不误拦) */
3571
+ enabled: z13.boolean().optional(),
3572
+ /** 基础分支(参数解析链第 2 级;第 1 级=nodeRecords[ALIGN].baseBranch) */
3573
+ baseBranch: z13.string().min(1).max(50).optional(),
3574
+ /** 仓库绝对路径(MCP 宿主 cwd 未必是任务仓库时由管理台配置;缺省=cwd 探测) */
3575
+ repoPath: z13.string().min(1).optional(),
3576
+ /** 任务分支前缀模式(A1 判定用) */
3577
+ branchPattern: z13.string().min(1).max(50).optional(),
3578
+ /** true=worktree 并行模式(A6 停留子项 N/A——主工作区停留基础分支由主会话承载) */
3579
+ worktreeMode: z13.boolean().optional(),
3580
+ /** false=项目声明无分支归档流程(A5 N/A;表达「有分支模型但无归档流程」粒度) */
3581
+ archiveToBase: z13.boolean().optional(),
3582
+ /** B7 版本一致判定的豁免路径清单(文档/临时产物) */
3583
+ docPaths: z13.array(z13.string().min(1)).max(50).optional()
3584
+ });
3585
+ var DEFAULT_VCS_DOC_PATHS = ["ProjectHub/", "docs/", "temp/", "*.md"];
3498
3586
  var ProjectSchema = z13.object({
3499
3587
  id: z13.string().optional(),
3500
3588
  key: z13.string().regex(/^[a-z0-9][a-z0-9-]{1,30}$/, "key \u5FC5\u987B\u4E3A kebab-case\uFF082-31 \u5B57\u7B26\uFF09"),
3501
3589
  name: z13.string().min(1).max(50),
3502
3590
  description: z13.string().max(500).optional(),
3503
3591
  status: ProjectStatusSchema.default("active"),
3592
+ vcs: VcsConfigSchema.optional(),
3504
3593
  createdAt: z13.date().optional(),
3505
3594
  updatedAt: z13.date().optional()
3506
3595
  });
@@ -3512,7 +3601,8 @@ var ProjectCreateSchema = z13.object({
3512
3601
  var ProjectUpdateSchema = z13.object({
3513
3602
  name: z13.string().min(1).max(50).optional(),
3514
3603
  description: z13.string().max(500).optional(),
3515
- status: ProjectStatusSchema.optional()
3604
+ status: ProjectStatusSchema.optional(),
3605
+ vcs: VcsConfigSchema.optional()
3516
3606
  });
3517
3607
 
3518
3608
  // src/schemas/enum-registry.ts
@@ -3665,6 +3755,12 @@ var NodePresetShapeSchema = z17.object({
3665
3755
  version: z17.string(),
3666
3756
  /** 分发来源标注(flow install 落库时填充包名;手工创建无此字段——「来源可见可核查」信任模型) */
3667
3757
  source: z17.object({ package: z17.string().min(1) }).optional(),
3758
+ /**
3759
+ * T202609230001:门禁声明(与 DagNodeSchema 同形)。此层不同步则 flow install 写入
3760
+ * 资产时 Zod strip 未知键——字段在资产入库时静默丢弃(分发链中段 F1 同步点)。
3761
+ */
3762
+ toolChecks: z17.array(ToolCheckSchema).max(NODE_CHECKS_MAX).optional(),
3763
+ aiChecks: z17.array(AiCheckSchema).max(NODE_CHECKS_MAX).optional(),
3668
3764
  /** 资产启停(可选——存量无此字段 = 启用;唯一写入口 POST /:code/enabled,不入 Create/Update/Copy) */
3669
3765
  enabled: z17.boolean().optional(),
3670
3766
  createdAt: z17.date().optional(),
@@ -3903,8 +3999,13 @@ var EMPTY_DIFF = {
3903
3999
  phase: null,
3904
4000
  track: null,
3905
4001
  skills: null,
3906
- agents: null
4002
+ agents: null,
4003
+ toolChecks: null,
4004
+ aiChecks: null
3907
4005
  };
4006
+ function sameChecks(left, right) {
4007
+ return JSON.stringify(left ?? []) === JSON.stringify(right ?? []);
4008
+ }
3908
4009
  function diffNames(beforeNames, afterNames) {
3909
4010
  const before = new Set(beforeNames);
3910
4011
  const after = new Set(afterNames);
@@ -3922,7 +4023,9 @@ function diffNodeAgainstPreset(node, preset) {
3922
4023
  phase: node.phase === preset.phase ? null : "changed",
3923
4024
  track: node.track === preset.track ? null : "changed",
3924
4025
  skills: diffNames(node.skills, preset.skills),
3925
- agents: diffNames(node.agents ?? [], preset.agents ?? [])
4026
+ agents: diffNames(node.agents ?? [], preset.agents ?? []),
4027
+ toolChecks: sameChecks(node.toolChecks, preset.toolChecks) ? null : "changed",
4028
+ aiChecks: sameChecks(node.aiChecks, preset.aiChecks) ? null : "changed"
3926
4029
  };
3927
4030
  }
3928
4031
  function computeUpgradeStatus(node, latest) {
@@ -3987,6 +4090,9 @@ function applyUpgradeDecisions(template, presetsByCode, decisions) {
3987
4090
  ...node,
3988
4091
  skills: [...node.skills],
3989
4092
  agents: [...node.agents ?? []],
4093
+ // T202609230001:门禁声明数组重建(同 skills 范式——keep 分支保留本地值时亦不共享引用)
4094
+ ...node.toolChecks ? { toolChecks: node.toolChecks.map((c) => c.params ? { ...c, params: { ...c.params } } : { ...c }) } : {},
4095
+ ...node.aiChecks ? { aiChecks: node.aiChecks.map((c) => ({ ...c })) } : {},
3990
4096
  ...node.sourcePreset ? {
3991
4097
  sourcePreset: {
3992
4098
  ...node.sourcePreset,
@@ -4062,6 +4168,16 @@ function applyUpgradeDecisions(template, presetsByCode, decisions) {
4062
4168
  working.prompt = latest.prompt;
4063
4169
  working.skills = [...latest.skills];
4064
4170
  working.agents = [...latest.agents ?? []];
4171
+ if (latest.toolChecks !== void 0) {
4172
+ working.toolChecks = latest.toolChecks.map((c) => c.params ? { ...c, params: { ...c.params } } : { ...c });
4173
+ } else {
4174
+ delete working.toolChecks;
4175
+ }
4176
+ if (latest.aiChecks !== void 0) {
4177
+ working.aiChecks = latest.aiChecks.map((c) => ({ ...c }));
4178
+ } else {
4179
+ delete working.aiChecks;
4180
+ }
4065
4181
  working.sourcePreset = {
4066
4182
  code: source.code,
4067
4183
  version: latest.version,
@@ -4346,6 +4462,7 @@ async function applyImport(deps, targetProjectId, bundle, decisions) {
4346
4462
  throw new ValidationError("\u6A21\u677F\u5185\u5BB9\u6821\u9A8C\u5931\u8D25\uFF08\u5BFC\u5165\u6587\u4EF6\u5B57\u6BB5\u975E\u6CD5\uFF09", parsed.error.issues);
4347
4463
  }
4348
4464
  assertUniqueNodeIds(nodesForWrite);
4465
+ assertUniqueAiCheckIds(nodesForWrite);
4349
4466
  const contentFields = {
4350
4467
  name: tplPayload.name,
4351
4468
  description: tplPayload.description,
@@ -4541,6 +4658,7 @@ export {
4541
4658
  AgentScopeSchema,
4542
4659
  AgentShapeSchema,
4543
4660
  AgentUpdateSchema,
4661
+ AiCheckSchema,
4544
4662
  AppError,
4545
4663
  ApproveRequestSchema,
4546
4664
  ApproveResponseSchema,
@@ -4569,6 +4687,7 @@ export {
4569
4687
  DAG_PHASES,
4570
4688
  DAG_TRACKS,
4571
4689
  DEFAULT_PROJECT_KEY,
4690
+ DEFAULT_VCS_DOC_PATHS,
4572
4691
  DagEdgeSchema,
4573
4692
  DagInstanceNodeSchema,
4574
4693
  DagInstanceSchema,
@@ -4620,6 +4739,7 @@ export {
4620
4739
  ModelAliasShapeSchema,
4621
4740
  ModelAliasUpdateSchema,
4622
4741
  ModelAliasWithRefCountSchema,
4742
+ NODE_CHECKS_MAX,
4623
4743
  NODE_ID_PATTERN,
4624
4744
  NODE_PRESET_CODE_PATTERN,
4625
4745
  NODE_STATUSES,
@@ -4684,6 +4804,8 @@ export {
4684
4804
  TemplateCandidateSchema,
4685
4805
  TemplateCodeFieldSchema,
4686
4806
  TemplatePayloadSchema,
4807
+ TestReportSchema,
4808
+ ToolCheckSchema,
4687
4809
  UnauthorizedError,
4688
4810
  UpgradeActionSchema,
4689
4811
  UpgradeApplyRequestSchema,
@@ -4691,6 +4813,7 @@ export {
4691
4813
  UpgradeNodeStatusSchema,
4692
4814
  VERSION,
4693
4815
  ValidationError,
4816
+ VcsConfigSchema,
4694
4817
  WRITE_ACK_ENTRY_KINDS,
4695
4818
  WriteAckEntryKindSchema,
4696
4819
  WriteAckSchema,
@@ -4702,6 +4825,7 @@ export {
4702
4825
  assertModelAliasExists,
4703
4826
  assertReferenceAggregateLimit,
4704
4827
  assertReferencesDeletable,
4828
+ assertUniqueAiCheckIds,
4705
4829
  assertUniqueNodeIds,
4706
4830
  buildImportPlan,
4707
4831
  buildTemplateCode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siming-org/core",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "license": "MIT",
5
5
  "author": "Wuchao",
6
6
  "engines": {