@zh-xx/antu 0.9.0

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.
Files changed (118) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +11 -0
  3. package/THIRD-PARTY-NOTICES.md +739 -0
  4. package/assets/viewer.html +1503 -0
  5. package/bin/antu-mcp.mjs +1549 -0
  6. package/bin/antu.mjs +1494 -0
  7. package/examples/agent/fact/1-minimal.en.json +57 -0
  8. package/examples/agent/fact/1-minimal.zh-CN.json +29 -0
  9. package/examples/agent/fact/2-single-actor.en.json +66 -0
  10. package/examples/agent/fact/2-single-actor.zh-CN.json +28 -0
  11. package/examples/agent/fact/3-groups.en.json +34 -0
  12. package/examples/agent/fact/3-groups.zh-CN.json +34 -0
  13. package/examples/agent/fact/4-views.en.json +44 -0
  14. package/examples/agent/fact/4-views.zh-CN.json +44 -0
  15. package/examples/agent/fact/5-duration.en.json +28 -0
  16. package/examples/agent/fact/5-duration.zh-CN.json +28 -0
  17. package/examples/agent/fact/6-sources.en.json +30 -0
  18. package/examples/agent/fact/6-sources.zh-CN.json +30 -0
  19. package/examples/agent/fact/7-undated.en.json +34 -0
  20. package/examples/agent/fact/7-undated.zh-CN.json +34 -0
  21. package/examples/agent/justification/1-minimal.en.json +83 -0
  22. package/examples/agent/justification/1-minimal.zh-CN.json +83 -0
  23. package/examples/agent/justification/2-against-and-rejected.en.json +82 -0
  24. package/examples/agent/justification/2-against-and-rejected.zh-CN.json +82 -0
  25. package/examples/agent/justification/3-issues.en.json +107 -0
  26. package/examples/agent/justification/3-issues.zh-CN.json +107 -0
  27. package/examples/agent/justification/4-shared-fact.en.json +111 -0
  28. package/examples/agent/justification/4-shared-fact.zh-CN.json +111 -0
  29. package/examples/agent/justification/5-sources.en.json +97 -0
  30. package/examples/agent/justification/5-sources.zh-CN.json +97 -0
  31. package/examples/agent/justification/6-all-or-any.en.json +98 -0
  32. package/examples/agent/justification/6-all-or-any.zh-CN.json +98 -0
  33. package/examples/agent/procedure/1-minimal.en.json +15 -0
  34. package/examples/agent/procedure/1-minimal.zh-CN.json +15 -0
  35. package/examples/agent/procedure/2-decision.en.json +17 -0
  36. package/examples/agent/procedure/2-decision.zh-CN.json +17 -0
  37. package/examples/agent/procedure/3-branches.en.json +22 -0
  38. package/examples/agent/procedure/3-branches.zh-CN.json +22 -0
  39. package/examples/agent/procedure/4-stages.en.json +34 -0
  40. package/examples/agent/procedure/4-stages.zh-CN.json +34 -0
  41. package/examples/agent/procedure/5-inferred-spine.en.json +21 -0
  42. package/examples/agent/procedure/5-inferred-spine.zh-CN.json +21 -0
  43. package/examples/agent/procedure/6-merged-edges.en.json +19 -0
  44. package/examples/agent/procedure/6-merged-edges.zh-CN.json +19 -0
  45. package/examples/agent/procedure/7-rules.en.json +30 -0
  46. package/examples/agent/procedure/7-rules.zh-CN.json +30 -0
  47. package/examples/agent/relationship/1-minimal.en.json +28 -0
  48. package/examples/agent/relationship/1-minimal.zh-CN.json +28 -0
  49. package/examples/agent/relationship/2-equity.en.json +59 -0
  50. package/examples/agent/relationship/2-equity.zh-CN.json +59 -0
  51. package/examples/agent/relationship/3-guarantee.en.json +51 -0
  52. package/examples/agent/relationship/3-guarantee.zh-CN.json +51 -0
  53. package/examples/agent/relationship/4-groups.en.json +68 -0
  54. package/examples/agent/relationship/4-groups.zh-CN.json +68 -0
  55. package/examples/agent/relationship/5-kinship.en.json +69 -0
  56. package/examples/agent/relationship/5-kinship.zh-CN.json +69 -0
  57. package/examples/fact/fang-yuan-loan-and-conflict.en.json +330 -0
  58. package/examples/fact/fang-yuan-loan-and-conflict.zh-CN.json +237 -0
  59. package/examples/fact/gym-membership-face-scan.en.json +181 -0
  60. package/examples/fact/gym-membership-face-scan.zh-CN.json +181 -0
  61. package/examples/fact/lin-fang-v-zhao-lei-private-lending.en.json +122 -0
  62. package/examples/fact/lin-fang-v-zhao-lei-private-lending.zh-CN.json +122 -0
  63. package/examples/fact/marketplace-platform-liability.en.json +192 -0
  64. package/examples/fact/marketplace-platform-liability.zh-CN.json +192 -0
  65. package/examples/fact/neighbour-corridor-charging.en.json +201 -0
  66. package/examples/fact/neighbour-corridor-charging.zh-CN.json +201 -0
  67. package/examples/fact/sample-construction-payment.en.json +220 -0
  68. package/examples/fact/sample-construction-payment.zh-CN.json +139 -0
  69. package/examples/fact/sample-four-parties-four-slots.en.json +202 -0
  70. package/examples/fact/sample-four-parties-four-slots.zh-CN.json +121 -0
  71. package/examples/fact/sample-no-groups.en.json +100 -0
  72. package/examples/fact/sample-no-groups.zh-CN.json +100 -0
  73. package/examples/fact/sample-three-slots.en.json +102 -0
  74. package/examples/fact/sample-three-slots.zh-CN.json +102 -0
  75. package/examples/fact/sample-two-actors-one-side.en.json +143 -0
  76. package/examples/fact/sample-two-actors-one-side.zh-CN.json +143 -0
  77. package/examples/fact/sample-two-parties-each-side.en.json +183 -0
  78. package/examples/fact/sample-two-parties-each-side.zh-CN.json +183 -0
  79. package/examples/justification/fang-yuan-defense-excess.en.json +636 -0
  80. package/examples/justification/fang-yuan-defense-excess.zh-CN.json +636 -0
  81. package/examples/justification/neighbour-corridor-liability.en.json +571 -0
  82. package/examples/justification/neighbour-corridor-liability.zh-CN.json +571 -0
  83. package/examples/procedure/01-software-development-contract.en.json +290 -0
  84. package/examples/procedure/01-software-development-contract.zh-CN.json +290 -0
  85. package/examples/procedure/02-purchase-contract.en.json +46 -0
  86. package/examples/procedure/02-purchase-contract.zh-CN.json +46 -0
  87. package/examples/procedure/03-labour-outsourcing-contract.en.json +251 -0
  88. package/examples/procedure/03-labour-outsourcing-contract.zh-CN.json +251 -0
  89. package/examples/procedure/04-non-disclosure-agreement.en.json +79 -0
  90. package/examples/procedure/04-non-disclosure-agreement.zh-CN.json +79 -0
  91. package/examples/procedure/05-premises-lease.en.json +344 -0
  92. package/examples/procedure/05-premises-lease.zh-CN.json +344 -0
  93. package/examples/procedure/06-epc-general-contract.en.json +375 -0
  94. package/examples/procedure/06-epc-general-contract.zh-CN.json +375 -0
  95. package/examples/procedure/07-share-acquisition-agreement.en.json +368 -0
  96. package/examples/procedure/07-share-acquisition-agreement.zh-CN.json +368 -0
  97. package/examples/raw//351/207/207/350/264/255/345/220/210/345/220/214-PO-2026-088.md +31 -0
  98. package/examples/raw//357/274/2102031/357/274/211/347/244/272/345/210/221/345/210/2353/345/217/267-/350/231/232/346/236/204/347/275/221/347/273/234/345/225/206/345/237/216/346/241/210-/344/270/200/345/256/241.md +36 -0
  99. package/examples/raw//357/274/2102031/357/274/211/347/244/272/346/260/221/345/210/2351/345/217/267-/346/260/221/351/227/264/345/200/237/350/264/267/346/241/210-/344/270/200/345/256/241.md +31 -0
  100. package/examples/raw//357/274/2102031/357/274/211/347/244/272/346/260/221/345/210/2352/345/217/267-/345/201/245/350/272/253/346/210/277/345/210/267/350/204/270/345/205/245/345/234/272/346/241/210-/344/270/200/345/256/241.md +40 -0
  101. package/examples/raw//357/274/2102031/357/274/211/347/244/272/346/260/221/347/273/2101/345/217/267-/346/245/274/351/201/223/345/205/205/347/224/265/345/212/235/351/230/273/346/241/210-/344/272/214/345/256/241.md +38 -0
  102. package/examples/raw//357/274/2102032/357/274/211/347/244/272/345/210/221/347/273/2101/345/217/267-/346/226/271/350/277/234/346/241/210-/344/272/214/345/256/241.md +49 -0
  103. package/examples/relationship/fang-yuan-parties.en.json +226 -0
  104. package/examples/relationship/fang-yuan-parties.zh-CN.json +226 -0
  105. package/examples/relationship/lin-fang-v-zhao-lei-parties.en.json +140 -0
  106. package/examples/relationship/lin-fang-v-zhao-lei-parties.zh-CN.json +140 -0
  107. package/examples/relationship/marketplace-parties.en.json +259 -0
  108. package/examples/relationship/marketplace-parties.zh-CN.json +259 -0
  109. package/examples/relationship/sample-group-guarantee.en.json +138 -0
  110. package/examples/relationship/sample-group-guarantee.zh-CN.json +138 -0
  111. package/examples/relationship/sample-loan-guarantee.en.json +122 -0
  112. package/examples/relationship/sample-loan-guarantee.zh-CN.json +122 -0
  113. package/package.json +35 -0
  114. package/server.json +20 -0
  115. package/spec/agent/fact/guide.md +114 -0
  116. package/spec/agent/justification/guide.md +100 -0
  117. package/spec/agent/procedure/guide.md +109 -0
  118. package/spec/agent/relationship/guide.md +92 -0
@@ -0,0 +1,97 @@
1
+ {
2
+ "specVersion": 1,
3
+ "type": "justification",
4
+ "title": "Time and source: a fact has a time; norms and facts point at their sources",
5
+ "speaker": "The court (appeal)",
6
+ "nodes": [
7
+ {
8
+ "id": "c-1",
9
+ "kind": "conclusion",
10
+ "label": "Appeal dismissed; judgment upheld",
11
+ "holds": "yes"
12
+ },
13
+ {
14
+ "id": "n-1",
15
+ "kind": "norm",
16
+ "label": "Civil Code Art. 509(1): the parties must perform their obligations in full as agreed",
17
+ "detail": "The parties must perform their obligations in full as agreed.",
18
+ "sourceIds": [
19
+ "s-1"
20
+ ]
21
+ },
22
+ {
23
+ "id": "e-1",
24
+ "kind": "element",
25
+ "label": "B did not pay the rent as agreed",
26
+ "holds": "yes"
27
+ },
28
+ {
29
+ "id": "f-1",
30
+ "kind": "fact",
31
+ "label": "B did not pay when the payment fell due on 5 March 2024",
32
+ "date": "2024-03-05",
33
+ "sourceIds": [
34
+ "s-2"
35
+ ]
36
+ },
37
+ {
38
+ "id": "f-2",
39
+ "kind": "fact",
40
+ "label": "At 14:30 that day B replied that money was tight",
41
+ "date": "2024-03-05T14:30",
42
+ "detail": "B's reply, in its own words: money is tight this month, I will pay it with next month's.",
43
+ "sourceIds": [
44
+ "s-3"
45
+ ]
46
+ }
47
+ ],
48
+ "links": [
49
+ {
50
+ "from": "n-1",
51
+ "to": "e-1",
52
+ "stance": "basis"
53
+ },
54
+ {
55
+ "from": "f-1",
56
+ "to": "e-1"
57
+ },
58
+ {
59
+ "from": "f-2",
60
+ "to": "e-1"
61
+ },
62
+ {
63
+ "from": "e-1",
64
+ "to": "c-1"
65
+ }
66
+ ],
67
+ "sources": [
68
+ {
69
+ "id": "s-1",
70
+ "type": "statute",
71
+ "name": "Civil Code, Art. 509",
72
+ "loc": {
73
+ "lawName": "Civil Code of the People's Republic of China",
74
+ "article": 509,
75
+ "version": "2020"
76
+ }
77
+ },
78
+ {
79
+ "id": "s-2",
80
+ "type": "case",
81
+ "name": "First-instance judgment · facts found",
82
+ "loc": {
83
+ "caseNo": "(2024) Jing 0105 Min Chu No. 1",
84
+ "court": "A district court"
85
+ }
86
+ },
87
+ {
88
+ "id": "s-3",
89
+ "type": "evidence",
90
+ "name": "The chat record",
91
+ "loc": {
92
+ "file": "chat.pdf",
93
+ "page": 3
94
+ }
95
+ }
96
+ ]
97
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "specVersion": 1,
3
+ "type": "justification",
4
+ "title": "时间和出处:事实带时间,规范和事实都指向来源",
5
+ "speaker": "某法院(二审)",
6
+ "nodes": [
7
+ {
8
+ "id": "c-1",
9
+ "kind": "conclusion",
10
+ "label": "驳回上诉,维持原判",
11
+ "holds": "yes"
12
+ },
13
+ {
14
+ "id": "n-1",
15
+ "kind": "norm",
16
+ "label": "民法典第 509 条第 1 款:当事人应当按照约定全面履行自己的义务",
17
+ "detail": "当事人应当按照约定全面履行自己的义务。",
18
+ "sourceIds": [
19
+ "s-1"
20
+ ]
21
+ },
22
+ {
23
+ "id": "e-1",
24
+ "kind": "element",
25
+ "label": "乙没有按约定付租金",
26
+ "holds": "yes"
27
+ },
28
+ {
29
+ "id": "f-1",
30
+ "kind": "fact",
31
+ "label": "乙在 2024 年 3 月 5 日的付款期限届满时没有付款",
32
+ "date": "2024-03-05",
33
+ "sourceIds": [
34
+ "s-2"
35
+ ]
36
+ },
37
+ {
38
+ "id": "f-2",
39
+ "kind": "fact",
40
+ "label": "乙于当天 14 时 30 分回复称资金紧张",
41
+ "date": "2024-03-05T14:30",
42
+ "detail": "回复原文:本月资金紧张,下月一并付。",
43
+ "sourceIds": [
44
+ "s-3"
45
+ ]
46
+ }
47
+ ],
48
+ "links": [
49
+ {
50
+ "from": "n-1",
51
+ "to": "e-1",
52
+ "stance": "basis"
53
+ },
54
+ {
55
+ "from": "f-1",
56
+ "to": "e-1"
57
+ },
58
+ {
59
+ "from": "f-2",
60
+ "to": "e-1"
61
+ },
62
+ {
63
+ "from": "e-1",
64
+ "to": "c-1"
65
+ }
66
+ ],
67
+ "sources": [
68
+ {
69
+ "id": "s-1",
70
+ "type": "statute",
71
+ "name": "民法典第 509 条",
72
+ "loc": {
73
+ "lawName": "中华人民共和国民法典",
74
+ "article": 509,
75
+ "version": "2020"
76
+ }
77
+ },
78
+ {
79
+ "id": "s-2",
80
+ "type": "case",
81
+ "name": "一审判决书 · 本院查明",
82
+ "loc": {
83
+ "caseNo": "(2024)京 0105 民初 1 号",
84
+ "court": "某区人民法院"
85
+ }
86
+ },
87
+ {
88
+ "id": "s-3",
89
+ "type": "evidence",
90
+ "name": "微信聊天记录",
91
+ "loc": {
92
+ "file": "chat.pdf",
93
+ "page": 3
94
+ }
95
+ }
96
+ ]
97
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "specVersion": 1,
3
+ "type": "justification",
4
+ "title": "And and or: every element is needed, one ground is enough",
5
+ "nodes": [
6
+ {
7
+ "id": "c-1",
8
+ "kind": "conclusion",
9
+ "label": "B is liable in tort",
10
+ "holds": "yes",
11
+ "combine": "all"
12
+ },
13
+ {
14
+ "id": "e-1",
15
+ "kind": "element",
16
+ "label": "B was at fault",
17
+ "holds": "yes",
18
+ "combine": "any"
19
+ },
20
+ {
21
+ "id": "e-2",
22
+ "kind": "element",
23
+ "label": "A suffered harm",
24
+ "holds": "yes"
25
+ },
26
+ {
27
+ "id": "e-3",
28
+ "kind": "element",
29
+ "label": "The fault caused the harm",
30
+ "holds": "yes"
31
+ },
32
+ {
33
+ "id": "f-1",
34
+ "kind": "fact",
35
+ "label": "B knew the path was icy and put up no warning",
36
+ "sourceIds": [
37
+ "s-1"
38
+ ]
39
+ },
40
+ {
41
+ "id": "f-2",
42
+ "kind": "fact",
43
+ "label": "B did not clear the snow in time",
44
+ "sourceIds": [
45
+ "s-1"
46
+ ]
47
+ },
48
+ {
49
+ "id": "f-3",
50
+ "kind": "fact",
51
+ "label": "A slipped on the ice and broke a bone",
52
+ "sourceIds": [
53
+ "s-1"
54
+ ]
55
+ }
56
+ ],
57
+ "links": [
58
+ {
59
+ "from": "f-1",
60
+ "to": "e-1"
61
+ },
62
+ {
63
+ "from": "f-2",
64
+ "to": "e-1"
65
+ },
66
+ {
67
+ "from": "f-3",
68
+ "to": "e-2"
69
+ },
70
+ {
71
+ "from": "f-3",
72
+ "to": "e-3"
73
+ },
74
+ {
75
+ "from": "e-1",
76
+ "to": "c-1"
77
+ },
78
+ {
79
+ "from": "e-2",
80
+ "to": "c-1"
81
+ },
82
+ {
83
+ "from": "e-3",
84
+ "to": "c-1"
85
+ }
86
+ ],
87
+ "sources": [
88
+ {
89
+ "id": "s-1",
90
+ "type": "evidence",
91
+ "name": "The photos and the medical record",
92
+ "loc": {
93
+ "file": "scene.pdf",
94
+ "page": 1
95
+ }
96
+ }
97
+ ]
98
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "specVersion": 1,
3
+ "type": "justification",
4
+ "title": "且与或:要件须全部具备,理由具备一个即可",
5
+ "nodes": [
6
+ {
7
+ "id": "c-1",
8
+ "kind": "conclusion",
9
+ "label": "乙应承担侵权责任",
10
+ "holds": "yes",
11
+ "combine": "all"
12
+ },
13
+ {
14
+ "id": "e-1",
15
+ "kind": "element",
16
+ "label": "乙有过错",
17
+ "holds": "yes",
18
+ "combine": "any"
19
+ },
20
+ {
21
+ "id": "e-2",
22
+ "kind": "element",
23
+ "label": "甲受到了损害",
24
+ "holds": "yes"
25
+ },
26
+ {
27
+ "id": "e-3",
28
+ "kind": "element",
29
+ "label": "过错与损害之间有因果关系",
30
+ "holds": "yes"
31
+ },
32
+ {
33
+ "id": "f-1",
34
+ "kind": "fact",
35
+ "label": "乙明知路面结冰而没有设置警示牌",
36
+ "sourceIds": [
37
+ "s-1"
38
+ ]
39
+ },
40
+ {
41
+ "id": "f-2",
42
+ "kind": "fact",
43
+ "label": "乙没有及时清理积雪",
44
+ "sourceIds": [
45
+ "s-1"
46
+ ]
47
+ },
48
+ {
49
+ "id": "f-3",
50
+ "kind": "fact",
51
+ "label": "甲在结冰处滑倒,造成骨折",
52
+ "sourceIds": [
53
+ "s-1"
54
+ ]
55
+ }
56
+ ],
57
+ "links": [
58
+ {
59
+ "from": "f-1",
60
+ "to": "e-1"
61
+ },
62
+ {
63
+ "from": "f-2",
64
+ "to": "e-1"
65
+ },
66
+ {
67
+ "from": "f-3",
68
+ "to": "e-2"
69
+ },
70
+ {
71
+ "from": "f-3",
72
+ "to": "e-3"
73
+ },
74
+ {
75
+ "from": "e-1",
76
+ "to": "c-1"
77
+ },
78
+ {
79
+ "from": "e-2",
80
+ "to": "c-1"
81
+ },
82
+ {
83
+ "from": "e-3",
84
+ "to": "c-1"
85
+ }
86
+ ],
87
+ "sources": [
88
+ {
89
+ "id": "s-1",
90
+ "type": "evidence",
91
+ "name": "现场照片和就诊记录",
92
+ "loc": {
93
+ "file": "scene.pdf",
94
+ "page": 1
95
+ }
96
+ }
97
+ ]
98
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "Minimal example: three steps in a straight line",
5
+ "actors": [{ "id": "a-1", "name": "Party A" }],
6
+ "nodes": [
7
+ { "id": "n-1", "kind": "start", "label": "Contract takes effect" },
8
+ { "id": "n-2", "kind": "step", "label": "Party A pays", "actorIds": ["a-1"] },
9
+ { "id": "n-3", "kind": "end", "label": "Performance complete", "outcome": "positive" }
10
+ ],
11
+ "edges": [
12
+ { "from": "n-1", "to": "n-2", "main": true },
13
+ { "from": "n-2", "to": "n-3", "main": true }
14
+ ]
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "最小示例:三步直线",
5
+ "actors": [{ "id": "a-1", "name": "甲方" }],
6
+ "nodes": [
7
+ { "id": "n-1", "kind": "start", "label": "合同生效" },
8
+ { "id": "n-2", "kind": "step", "label": "甲方付款", "actorIds": ["a-1"] },
9
+ { "id": "n-3", "kind": "end", "label": "履行完毕", "outcome": "positive" }
10
+ ],
11
+ "edges": [
12
+ { "from": "n-1", "to": "n-2", "main": true },
13
+ { "from": "n-2", "to": "n-3", "main": true }
14
+ ]
15
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "Decision point: diamond + conditions + back edge",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "Deliverables submitted" },
7
+ { "id": "n-2", "kind": "decision", "label": "Acceptance up to standard?" },
8
+ { "id": "n-3", "kind": "step", "label": "Party B rectifies", "outcome": "negative" },
9
+ { "id": "n-4", "kind": "end", "label": "Acceptance passed" }
10
+ ],
11
+ "edges": [
12
+ { "from": "n-1", "to": "n-2", "main": true },
13
+ { "from": "n-2", "to": "n-4", "condition": "Pass", "main": true },
14
+ { "from": "n-2", "to": "n-3", "condition": "Fail" },
15
+ { "from": "n-3", "to": "n-2" }
16
+ ]
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "判定点:菱形 + 条件 + 回边",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "提交成果" },
7
+ { "id": "n-2", "kind": "decision", "label": "验收是否合格" },
8
+ { "id": "n-3", "kind": "step", "label": "乙方整改", "outcome": "negative" },
9
+ { "id": "n-4", "kind": "end", "label": "验收通过" }
10
+ ],
11
+ "edges": [
12
+ { "from": "n-1", "to": "n-2", "main": true },
13
+ { "from": "n-2", "to": "n-4", "condition": "合格", "main": true },
14
+ { "from": "n-2", "to": "n-3", "condition": "不合格" },
15
+ { "from": "n-3", "to": "n-2" }
16
+ ]
17
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "Branches: one step node with several outgoing edges",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "Service period starts" },
7
+ { "id": "n-2", "kind": "step", "label": "Party B submits monthly service list" },
8
+ { "id": "n-3", "kind": "step", "label": "Party A pays" },
9
+ { "id": "n-4", "kind": "step", "label": "Party B pays liquidated damages", "outcome": "negative" },
10
+ { "id": "n-5", "kind": "step", "label": "Party A pays interest for late payment", "outcome": "negative" },
11
+ { "id": "n-6", "kind": "end", "label": "Contract term ends" }
12
+ ],
13
+ "edges": [
14
+ { "from": "n-1", "to": "n-2", "main": true },
15
+ { "from": "n-2", "to": "n-3", "main": true },
16
+ { "from": "n-2", "to": "n-4", "condition": "Party B fails to staff as agreed" },
17
+ { "from": "n-4", "to": "n-2" },
18
+ { "from": "n-3", "to": "n-5", "condition": "Party A pays late" },
19
+ { "from": "n-5", "to": "n-3" },
20
+ { "from": "n-3", "to": "n-6", "main": true }
21
+ ]
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "分支:一个过程节点挂多条出边",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "服务期开始" },
7
+ { "id": "n-2", "kind": "step", "label": "乙方每月提交服务清单" },
8
+ { "id": "n-3", "kind": "step", "label": "甲方付款" },
9
+ { "id": "n-4", "kind": "step", "label": "乙方支付违约金", "outcome": "negative" },
10
+ { "id": "n-5", "kind": "step", "label": "甲方支付逾期利息", "outcome": "negative" },
11
+ { "id": "n-6", "kind": "end", "label": "合同期满" }
12
+ ],
13
+ "edges": [
14
+ { "from": "n-1", "to": "n-2", "main": true },
15
+ { "from": "n-2", "to": "n-3", "main": true },
16
+ { "from": "n-2", "to": "n-4", "condition": "乙方未按约配置人员" },
17
+ { "from": "n-4", "to": "n-2" },
18
+ { "from": "n-3", "to": "n-5", "condition": "甲方逾期付款" },
19
+ { "from": "n-5", "to": "n-3" },
20
+ { "from": "n-3", "to": "n-6", "main": true }
21
+ ]
22
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "Stages, actors and outcomes",
5
+ "domain": "contract-performance",
6
+ "actors": [
7
+ { "id": "a-1", "name": "Party A", "role": "Client" },
8
+ { "id": "a-2", "name": "Party B", "role": "Developer" }
9
+ ],
10
+ "stages": [
11
+ { "id": "st-1", "label": "Signing" },
12
+ { "id": "st-2", "label": "Development" },
13
+ { "id": "st-3", "label": "Wrap-up" }
14
+ ],
15
+ "sources": [
16
+ { "id": "s-1", "type": "contract", "name": "Software development services contract", "loc": { "file": "software-development-services-contract.docx" } }
17
+ ],
18
+ "nodes": [
19
+ { "id": "n-1", "kind": "start", "label": "Contract signed and effective", "stageId": "st-1" },
20
+ { "id": "n-2", "kind": "step", "label": "Party A pays first instalment", "detail": "RMB 360,000", "actorIds": ["a-1"], "stageId": "st-1", "sourceIds": ["s-1"] },
21
+ { "id": "n-3", "kind": "step", "label": "Requirements confirmed", "detail": "Due by 2026-06-30", "actorIds": ["a-2"], "stageId": "st-2" },
22
+ { "id": "n-4", "kind": "document", "label": "Requirements confirmation", "stageId": "st-2" },
23
+ { "id": "n-5", "kind": "note", "label": "Changes need written confirmation", "stageId": "st-2" },
24
+ { "id": "n-6", "kind": "step", "label": "Project complete", "outcome": "positive", "stageId": "st-3" },
25
+ { "id": "n-7", "kind": "end", "label": "Contract terminated", "stageId": "st-3" }
26
+ ],
27
+ "edges": [
28
+ { "from": "n-1", "to": "n-2", "main": true },
29
+ { "from": "n-2", "to": "n-3", "main": true },
30
+ { "from": "n-3", "to": "n-4", "main": true },
31
+ { "from": "n-4", "to": "n-6", "main": true },
32
+ { "from": "n-6", "to": "n-7", "main": true }
33
+ ]
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "阶段、主体与结果",
5
+ "domain": "contract-performance",
6
+ "actors": [
7
+ { "id": "a-1", "name": "甲方", "role": "委托方" },
8
+ { "id": "a-2", "name": "乙方", "role": "开发方" }
9
+ ],
10
+ "stages": [
11
+ { "id": "st-1", "label": "签约" },
12
+ { "id": "st-2", "label": "开发" },
13
+ { "id": "st-3", "label": "收尾" }
14
+ ],
15
+ "sources": [
16
+ { "id": "s-1", "type": "contract", "name": "软件开发服务合同", "loc": { "file": "软件开发服务合同.docx" } }
17
+ ],
18
+ "nodes": [
19
+ { "id": "n-1", "kind": "start", "label": "合同签署生效", "stageId": "st-1" },
20
+ { "id": "n-2", "kind": "step", "label": "甲方支付首期款", "detail": "360,000 元", "actorIds": ["a-1"], "stageId": "st-1", "sourceIds": ["s-1"] },
21
+ { "id": "n-3", "kind": "step", "label": "需求确认", "detail": "2026-06-30 前完成", "actorIds": ["a-2"], "stageId": "st-2" },
22
+ { "id": "n-4", "kind": "document", "label": "需求确认书", "stageId": "st-2" },
23
+ { "id": "n-5", "kind": "note", "label": "需求变更须双方书面确认", "stageId": "st-2" },
24
+ { "id": "n-6", "kind": "step", "label": "项目完成", "outcome": "positive", "stageId": "st-3" },
25
+ { "id": "n-7", "kind": "end", "label": "合同终止", "stageId": "st-3" }
26
+ ],
27
+ "edges": [
28
+ { "from": "n-1", "to": "n-2", "main": true },
29
+ { "from": "n-2", "to": "n-3", "main": true },
30
+ { "from": "n-3", "to": "n-4", "main": true },
31
+ { "from": "n-4", "to": "n-6", "main": true },
32
+ { "from": "n-6", "to": "n-7", "main": true }
33
+ ]
34
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "No main flags: let the engine infer the spine",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "Case filed" },
7
+ { "id": "n-2", "kind": "step", "label": "Complaint served" },
8
+ { "id": "n-3", "kind": "decision", "label": "Defendant responds?" },
9
+ { "id": "n-4", "kind": "step", "label": "Trial in absentia" },
10
+ { "id": "n-5", "kind": "step", "label": "Hearing held" },
11
+ { "id": "n-6", "kind": "end", "label": "Judgment rendered" }
12
+ ],
13
+ "edges": [
14
+ { "from": "n-1", "to": "n-2" },
15
+ { "from": "n-2", "to": "n-3" },
16
+ { "from": "n-3", "to": "n-5", "condition": "Responds" },
17
+ { "from": "n-3", "to": "n-4", "condition": "No response" },
18
+ { "from": "n-4", "to": "n-6" },
19
+ { "from": "n-5", "to": "n-6" }
20
+ ]
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "不标 main:让引擎自己认主干",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "立案" },
7
+ { "id": "n-2", "kind": "step", "label": "送达起诉状副本" },
8
+ { "id": "n-3", "kind": "decision", "label": "被告是否答辩" },
9
+ { "id": "n-4", "kind": "step", "label": "缺席审理" },
10
+ { "id": "n-5", "kind": "step", "label": "开庭审理" },
11
+ { "id": "n-6", "kind": "end", "label": "作出判决" }
12
+ ],
13
+ "edges": [
14
+ { "from": "n-1", "to": "n-2" },
15
+ { "from": "n-2", "to": "n-3" },
16
+ { "from": "n-3", "to": "n-5", "condition": "答辩" },
17
+ { "from": "n-3", "to": "n-4", "condition": "不答辩" },
18
+ { "from": "n-4", "to": "n-6" },
19
+ { "from": "n-5", "to": "n-6" }
20
+ ]
21
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "Several edges to one target: different conditions, merged on render",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "Service period starts" },
7
+ { "id": "n-2", "kind": "step", "label": "Day-to-day performance" },
8
+ { "id": "n-3", "kind": "step", "label": "Party A may terminate unilaterally", "outcome": "negative" },
9
+ { "id": "n-4", "kind": "end", "label": "Contract terminated" }
10
+ ],
11
+ "edges": [
12
+ { "from": "n-1", "to": "n-2", "main": true },
13
+ { "from": "n-2", "to": "n-3", "condition": "Party B below standard 3 months running" },
14
+ { "from": "n-2", "to": "n-3", "condition": "Party B penalised over employment contracts" },
15
+ { "from": "n-2", "to": "n-3", "condition": "Party A penalised for Party B's fault" },
16
+ { "from": "n-2", "to": "n-4", "main": true },
17
+ { "from": "n-3", "to": "n-4" }
18
+ ]
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "type": "procedure",
3
+ "specVersion": 1,
4
+ "title": "同一目标的多条边:条件不同,渲染时合并",
5
+ "nodes": [
6
+ { "id": "n-1", "kind": "start", "label": "服务期开始" },
7
+ { "id": "n-2", "kind": "step", "label": "日常履行" },
8
+ { "id": "n-3", "kind": "step", "label": "甲方可单方解除", "outcome": "negative" },
9
+ { "id": "n-4", "kind": "end", "label": "合同终止" }
10
+ ],
11
+ "edges": [
12
+ { "from": "n-1", "to": "n-2", "main": true },
13
+ { "from": "n-2", "to": "n-3", "condition": "乙方连续 3 个月不达标" },
14
+ { "from": "n-2", "to": "n-3", "condition": "乙方未依法签劳动合同被查处" },
15
+ { "from": "n-2", "to": "n-3", "condition": "因乙方原因甲方被处罚" },
16
+ { "from": "n-2", "to": "n-4", "main": true },
17
+ { "from": "n-3", "to": "n-4" }
18
+ ]
19
+ }