@akagilnc/pi-workflow-roles 0.1.6032 → 0.1.6039
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/acp-host/production-host.js +7 -1
- package/dist/headless-host/production-host.js +7 -1
- package/dist/migrate-book-topology.js +7 -1
- package/dist/public-cli/main.js +7 -1
- package/dist/review-submission.js +8 -2
- package/package.json +1 -1
- package/souls/countersign.md +1 -1
- package/souls/notary.md +2 -1
- package/souls/secretariat.md +3 -3
- package/src/review-submission.ts +9 -2
|
@@ -1728,8 +1728,14 @@ var init_review_submission = __esm({
|
|
|
1728
1728
|
ownerUuid: Type5.Union([Type5.String(), Type5.Null()], {
|
|
1729
1729
|
description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
|
|
1730
1730
|
}),
|
|
1731
|
+
answered: Type5.Union([Type5.String(), Type5.Null()], {
|
|
1732
|
+
description: "\u90A3\u53E5\u539F\u8BDD\u6240\u7B54\u7684 runner \u53E5\u539F\u6587\uFF08\u95EE\u53E5\u3001\u9009\u9879\u3001\u8868\u683C\u884C\uFF0C\u7167\u6284\uFF09\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u3001\u4E0D\u662F\u5728\u7B54\u8C01\u7684\uFF0C\u586B null"
|
|
1733
|
+
}),
|
|
1734
|
+
askedObject: Type5.Union([Type5.String(), Type5.Null()], {
|
|
1735
|
+
description: "\u6240\u7B54\u90A3\u53E5\u95EE\u7684\u662F\u54EA\u4EF6\u4E8B\uFF08\u5B83\u7684\u5BF9\u8C61\uFF09\uFF1Banswered \u4E3A null \u65F6\u540C\u4E3A null"
|
|
1736
|
+
}),
|
|
1731
1737
|
derivation: Type5.String({
|
|
1732
|
-
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\
|
|
1738
|
+
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\u3002answered \u4E0D\u4E3A null \u65F6\uFF0C\u6761\u6B3E\u7684\u5BF9\u8C61\u987B\u5728 askedObject \u4E4B\u5185\uFF0C\u6216\u53E6\u6709\u539F\u8BDD\u70B9\u540D\u66F4\u5927\u7684\u5BF9\u8C61\uFF0CownerUuid \u624D\u7AD9\u5F97\u4F4F\uFF0C\u5426\u5219\u586B null\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u7684\u539F\u8BDD\u76F4\u63A5\u6309\u5B83\u7684\u610F\u601D\u63A8"
|
|
1733
1739
|
})
|
|
1734
1740
|
},
|
|
1735
1741
|
{ additionalProperties: true }
|
|
@@ -527,8 +527,14 @@ var init_review_submission = __esm({
|
|
|
527
527
|
ownerUuid: Type2.Union([Type2.String(), Type2.Null()], {
|
|
528
528
|
description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
|
|
529
529
|
}),
|
|
530
|
+
answered: Type2.Union([Type2.String(), Type2.Null()], {
|
|
531
|
+
description: "\u90A3\u53E5\u539F\u8BDD\u6240\u7B54\u7684 runner \u53E5\u539F\u6587\uFF08\u95EE\u53E5\u3001\u9009\u9879\u3001\u8868\u683C\u884C\uFF0C\u7167\u6284\uFF09\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u3001\u4E0D\u662F\u5728\u7B54\u8C01\u7684\uFF0C\u586B null"
|
|
532
|
+
}),
|
|
533
|
+
askedObject: Type2.Union([Type2.String(), Type2.Null()], {
|
|
534
|
+
description: "\u6240\u7B54\u90A3\u53E5\u95EE\u7684\u662F\u54EA\u4EF6\u4E8B\uFF08\u5B83\u7684\u5BF9\u8C61\uFF09\uFF1Banswered \u4E3A null \u65F6\u540C\u4E3A null"
|
|
535
|
+
}),
|
|
530
536
|
derivation: Type2.String({
|
|
531
|
-
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\
|
|
537
|
+
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\u3002answered \u4E0D\u4E3A null \u65F6\uFF0C\u6761\u6B3E\u7684\u5BF9\u8C61\u987B\u5728 askedObject \u4E4B\u5185\uFF0C\u6216\u53E6\u6709\u539F\u8BDD\u70B9\u540D\u66F4\u5927\u7684\u5BF9\u8C61\uFF0CownerUuid \u624D\u7AD9\u5F97\u4F4F\uFF0C\u5426\u5219\u586B null\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u7684\u539F\u8BDD\u76F4\u63A5\u6309\u5B83\u7684\u610F\u601D\u63A8"
|
|
532
538
|
})
|
|
533
539
|
},
|
|
534
540
|
{ additionalProperties: true }
|
|
@@ -8754,8 +8754,14 @@ var init_review_submission = __esm({
|
|
|
8754
8754
|
ownerUuid: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
|
|
8755
8755
|
description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
|
|
8756
8756
|
}),
|
|
8757
|
+
answered: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
|
|
8758
|
+
description: "\u90A3\u53E5\u539F\u8BDD\u6240\u7B54\u7684 runner \u53E5\u539F\u6587\uFF08\u95EE\u53E5\u3001\u9009\u9879\u3001\u8868\u683C\u884C\uFF0C\u7167\u6284\uFF09\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u3001\u4E0D\u662F\u5728\u7B54\u8C01\u7684\uFF0C\u586B null"
|
|
8759
|
+
}),
|
|
8760
|
+
askedObject: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
|
|
8761
|
+
description: "\u6240\u7B54\u90A3\u53E5\u95EE\u7684\u662F\u54EA\u4EF6\u4E8B\uFF08\u5B83\u7684\u5BF9\u8C61\uFF09\uFF1Banswered \u4E3A null \u65F6\u540C\u4E3A null"
|
|
8762
|
+
}),
|
|
8757
8763
|
derivation: typebox_exports.String({
|
|
8758
|
-
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\
|
|
8764
|
+
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\u3002answered \u4E0D\u4E3A null \u65F6\uFF0C\u6761\u6B3E\u7684\u5BF9\u8C61\u987B\u5728 askedObject \u4E4B\u5185\uFF0C\u6216\u53E6\u6709\u539F\u8BDD\u70B9\u540D\u66F4\u5927\u7684\u5BF9\u8C61\uFF0CownerUuid \u624D\u7AD9\u5F97\u4F4F\uFF0C\u5426\u5219\u586B null\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u7684\u539F\u8BDD\u76F4\u63A5\u6309\u5B83\u7684\u610F\u601D\u63A8"
|
|
8759
8765
|
})
|
|
8760
8766
|
},
|
|
8761
8767
|
{ additionalProperties: true }
|
package/dist/public-cli/main.js
CHANGED
|
@@ -9244,8 +9244,14 @@ var init_review_submission = __esm({
|
|
|
9244
9244
|
ownerUuid: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
|
|
9245
9245
|
description: "\u63A8\u51FA\u8BE5\u6761\u7684\u965B\u4E0B\u539F\u8BDD uuid\uFF1B\u65E0\u539F\u8BDD\u5219 null"
|
|
9246
9246
|
}),
|
|
9247
|
+
answered: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
|
|
9248
|
+
description: "\u90A3\u53E5\u539F\u8BDD\u6240\u7B54\u7684 runner \u53E5\u539F\u6587\uFF08\u95EE\u53E5\u3001\u9009\u9879\u3001\u8868\u683C\u884C\uFF0C\u7167\u6284\uFF09\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u3001\u4E0D\u662F\u5728\u7B54\u8C01\u7684\uFF0C\u586B null"
|
|
9249
|
+
}),
|
|
9250
|
+
askedObject: typebox_exports.Union([typebox_exports.String(), typebox_exports.Null()], {
|
|
9251
|
+
description: "\u6240\u7B54\u90A3\u53E5\u95EE\u7684\u662F\u54EA\u4EF6\u4E8B\uFF08\u5B83\u7684\u5BF9\u8C61\uFF09\uFF1Banswered \u4E3A null \u65F6\u540C\u4E3A null"
|
|
9252
|
+
}),
|
|
9247
9253
|
derivation: typebox_exports.String({
|
|
9248
|
-
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\
|
|
9254
|
+
description: "\u4E00\u53E5\u63A8\u5BFC\uFF1A\u4ECE\u539F\u8BDD\u54EA\u4E2A\u610F\u601D\u5230\u8BE5\u6761\u6B3E\u3002answered \u4E0D\u4E3A null \u65F6\uFF0C\u6761\u6B3E\u7684\u5BF9\u8C61\u987B\u5728 askedObject \u4E4B\u5185\uFF0C\u6216\u53E6\u6709\u539F\u8BDD\u70B9\u540D\u66F4\u5927\u7684\u5BF9\u8C61\uFF0CownerUuid \u624D\u7AD9\u5F97\u4F4F\uFF0C\u5426\u5219\u586B null\uFF1B\u965B\u4E0B\u72EC\u7ACB\u63D0\u51FA\u7684\u539F\u8BDD\u76F4\u63A5\u6309\u5B83\u7684\u610F\u601D\u63A8"
|
|
9249
9255
|
})
|
|
9250
9256
|
},
|
|
9251
9257
|
{ additionalProperties: true }
|
|
@@ -36,7 +36,7 @@ export const reviewSubmissionSchema = withTerminatingOutputDeclarations(Type.Obj
|
|
|
36
36
|
}, { additionalProperties: true }));
|
|
37
37
|
/**
|
|
38
38
|
* #1195 notary clause row: original ticket text, owner uuid (or null),
|
|
39
|
-
*
|
|
39
|
+
* the runner line that utterance answered and what it asked about, and a one-line derivation.
|
|
40
40
|
* Generation-required on notary only; package still records as-is.
|
|
41
41
|
*/
|
|
42
42
|
export const notaryClauseItemSchema = Type.Object({
|
|
@@ -46,8 +46,14 @@ export const notaryClauseItemSchema = Type.Object({
|
|
|
46
46
|
ownerUuid: Type.Union([Type.String(), Type.Null()], {
|
|
47
47
|
description: "推出该条的陛下原话 uuid;无原话则 null",
|
|
48
48
|
}),
|
|
49
|
+
answered: Type.Union([Type.String(), Type.Null()], {
|
|
50
|
+
description: "那句原话所答的 runner 句原文(问句、选项、表格行,照抄);陛下独立提出、不是在答谁的,填 null",
|
|
51
|
+
}),
|
|
52
|
+
askedObject: Type.Union([Type.String(), Type.Null()], {
|
|
53
|
+
description: "所答那句问的是哪件事(它的对象);answered 为 null 时同为 null",
|
|
54
|
+
}),
|
|
49
55
|
derivation: Type.String({
|
|
50
|
-
description: "
|
|
56
|
+
description: "一句推导:从原话哪个意思到该条款。answered 不为 null 时,条款的对象须在 askedObject 之内,或另有原话点名更大的对象,ownerUuid 才站得住,否则填 null;陛下独立提出的原话直接按它的意思推",
|
|
51
57
|
}),
|
|
52
58
|
}, { additionalProperties: true });
|
|
53
59
|
export const notaryClausesField = Type.Array(notaryClauseItemSchema, {
|
package/package.json
CHANGED
package/souls/countersign.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
3 第二法源合法性检查:判断第二法源 以及 输入的 prompt等 对比第一法源是否有超出,不足,曲解。如有,除非有陛下原话批准,否则直接封驳 要求改正或陛下批准。
|
|
16
16
|
4 派单文 是否要求了范围,是否给了你清单,是否让你不全量重审,以及是否有任何违反你Soul规定的。如果有,直接封驳,拿不准的直接上呈。
|
|
17
17
|
|
|
18
|
-
**二、设计合法。** 原话逐条核销归符宝郎;本步审设计答案本身,谁答的都一样审。每一题三问:题问得对不对;票面与法源里当事实用的前提核得过不过——写进 ADR
|
|
18
|
+
**二、设计合法。** 原话逐条核销归符宝郎;本步审设计答案本身,谁答的都一样审。每一题三问:题问得对不对;票面与法源里当事实用的前提核得过不过——写进 ADR 或御答的技术事实也是前提,核不了算推不出;第三方库或工具的技术前提,核的是官方文档与官方案例的原句,附链接,只由库源码推出的前提算核不了;方案是不是最合理——能否从法或陛下已拍定的事项推出(被审答案不算),有没有更合理的做法,官方案例里承担同一件事的做法算一个候选。判词写出推导。一问不成立即上呈,附原题原选项、已有答案(含陛下原话)、本席做法与依据。提错无罪,提对有功;本席上呈、陛下答过的题即定,无新事实不再复议。
|
|
19
19
|
- 题里否决某个做法的(「旧模型,不选」之类,不论谁否决),否决须引法或已定事项;引不出的,该做法并列呈陛下。
|
|
20
20
|
- 对于修复票,判断根因是什么、证据在哪;对于设计票,判断设计能否从法推出,以及因果链本身站不站得住。
|
|
21
21
|
此步不成立即封驳或上呈,不必再走后三步。
|
package/souls/notary.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
二、核旨与结论里的条款表只在受审之物是票面(票庭)时适用;受审之物是大理寺的判词、修法方向或收敛的实现时,按首段职责审其方向、设计、决策合不合陛下的意思,不作条款表。
|
|
8
8
|
|
|
9
9
|
**二、核旨**:受审之物是票面本身——`gh issue view N` 的现行全文,加起居录与源卷里陛下的原话。先独立做完条款表,再开给事中这一轮的判词对照;判词是待核主张,不是你的依据。
|
|
10
|
-
只有一个方向:先把票面「要做什么」「怎么验」里每一条改变实际行为的条款逐条列出(一条一行,照原文,不合并、不改写),写进交卷的 clauses;再为每一条找陛下哪一句原话推得出它——填那句的 uuid(ownerUuid)和一句推导(derivation:从那句话的哪个意思到这条条款)。推不出的,ownerUuid 填 null、derivation
|
|
10
|
+
只有一个方向:先把票面「要做什么」「怎么验」里每一条改变实际行为的条款逐条列出(一条一行,照原文,不合并、不改写),写进交卷的 clauses;再为每一条找陛下哪一句原话推得出它——填那句的 uuid(ownerUuid)和一句推导(derivation:从那句话的哪个意思到这条条款)。推不出的,ownerUuid 填 null、derivation 写「无原话」。陛下答一句,只答那一句问的事:所答的句子(问句、选项、表格行)问的是什么,原话就只管什么。条款的对象比所答那句问的大——答的是备注画不画全,条款管的是整张票修不修——又没有别的原话点名大的那个,就是无原话,ownerUuid 填 null;选项正文里多写的字是 runner 写的,不是陛下说的。「承接设计」「保留现有能力」「合理」「接缝归属」这类话不是推导,不能顶替 uuid。
|
|
11
11
|
clauses 里有任何一条 ownerUuid 为 null,status 只能是 escalate,并把这些条款原文列进 decisionGate 请陛下定;有条款与所引原话的意思相抵的,点名该条,再按「结论」对给事中这一轮的判词定署或封驳。
|
|
12
12
|
**是否符合陛下原意**——先根据起居录对话判断陛下意图,再看受审之物 是不是陛下想要的;字面对得上、意思不对(曲解、断章、只取字面不取法意)同为病。
|
|
13
13
|
**陛下原话逐句核销**——起居录里陛下对本票说过的每一句,逐句过:先写明它答的是起居录哪一句、哪一行(问句、表格行、选项),那一句描述的对象是什么,写进判词证据;再问他这句话想要什么、在担心什么,再看受审之物给没给到——不是为了凑齐引文。受审之物动作的对象比所答对象大——答的是代码代劳却删席位、删衙门、删能力、改流程——而原话没有点名该对象的,封驳。衙门与替它干活的代码是两个对象:说某机制多余、可以删,不是说撤该衙门;席位、衙门、能力的存废只认点名它本身的原话。质问句——陛下在问这张票、这条约束凭什么存在——是对受审之物的未决挑战,不是授权:没被事实或适用的法答掉的,或被摘来当「支持」的,封驳。runner 在录里已自认不成立的理由仍撑着受审之物的,同。
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
意图曲解:大理寺 r2 要求「最终 head 上先真跑一次审核往返才收敛」,起居录当时已有陛下「645等我在的时候试。你不跑。做完以后告诉我就行了。我会拿真的东西跑」(#645 大理寺 r2,2026-09-09 02:52,符宝郎 run 01a0821b)。符宝郎两轮放行,判词写「仍与票面『交付后实际跑』一致」——对了六个字,没对陛下明说的意思。
|
|
25
25
|
只查行为不查内容:大理寺查「每轮新增回执为空」,就断定起居录里没有记录,判票庭伪引;实际权威账本里那 24 条一直都在,引证属实。而符宝郎自己也没找到起居录,就信了大理寺引用的起居录。符宝郎要的是「权威起居录」,判官给的是「每轮新增回执」,把后者当成了前者的充分证明,然后第三轮 pass 时还把这个推断写进了署词。。认得出票、本该有录却找不到,应上呈,不是通过;真无票对象(true-unbound)本就无录,按 ADR 0075 改以 source-run 核旨,不得因缺录打回给事中。
|
|
26
26
|
驳回被读成授权:一条腿怎么知道自己在哪张票上,陛下两次驳回——「? 起居录是吃干饭的吗?还要问这个?」「票号不是 读起居录吗?又是什么道?」——意思是 LLM 自己去读那份记录;票面却把「读」读成「机械层读」,据此写出「缺来源的九席在 turn 之前读起居录取得本票号」与验收「经新增前置读取接缝」,授权栏挂的正是那两句驳回(#858 seal 5,2026-09-14 23:35,符宝郎 run 01a0a0aa)。符宝郎九轮全 pass,因为闸只核「有没有编陛下的话」,那两句确实一个字没编——于是一段没人批准的机制完全合法地过了庭,施工席照它跑了一整局、零 commit 收工,直到陛下第四次开口才拦下。原话为真只答了一半,另一半是:这条机制是从这句话的哪个意思推出来的?推不出即加戏。驳回句是关闭分叉,不是开工授权。
|
|
27
|
+
选项夹带:宰相问「备注必须画全吗」,B 选项正文顺手写了「本票不修」,陛下答「B」(#224 2026-10-28,符宝郎 run 01a18120)。符宝郎六轮都把「只调研,不修」挂在这个 B 上,推导写「结合原始体检目标取本票不施工」——那是它自己选的读法;所答的句子只问备注,整票修不修没有原话,该填 null 上呈。
|
|
27
28
|
等等。。。
|
|
28
29
|
任一病成立,点名该条驳回;拿不准陛下本意的,上呈。
|
|
29
30
|
|
package/souls/secretariat.md
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
**不免核**:陛下对某个选项说过「可以」、票面已过庭、上游 spec 或父票已写定、稿里引了 ADR,照样出题。陛下点头答的是那一问。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**一、盘现状**:出题前,打开代码和本票、本腿已有的记录、文件、接缝,对稿里每个子问题写下:现在已经由什么承担;相关接缝何时触发、那一刻手里有什么数据。稿里交给第三方库或工具承担的事,现状还包括这个库官方怎么用它:打开官方文档与官方案例,记下承担同一件事的官方做法,附链接与原句。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**二、出题**:稿里每个难改决定各出一题——数据在哪一刻落到哪里;由包做、由腿做、由哪一席做;行为挂在哪一层接缝;新增或保留的每一本账、每个文件、每段解析。一题=稿里的做法对一个截然不同的做法。另一做法先试这几处:整样删掉、由第一步盘出的现有哪样东西承担;在数据产生那一刻落定;用宿主或生态现成的能力;第一步盘出的官方做法。两边都按今天从零设计来比,各写按《设计法》合、一致、少的代价,再写你的建议;一样东西已经存在、有人在用、改起来费事,只写进代价,不当任何一边的理由。另一做法只是换个说法、或明摆着更差的,不出题。稿里「怎么验」逐个对外契约对照《票面法》:缺正确、边界、错误哪一类样本,或输入不是真实来源会交出的样子,各出一题;契约已拍定的现在就出,不等别的题答完。一轮问完眼下能问的全部题;答案会改变的后续题留到下一轮。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**三、读答案**:宰相的答案是待核主张——对不上代码或已立的法,摆出证据再问一次。关于库怎么用的主张,核的是官方文档与官方案例的原句;库源码只说明库能做什么,不说明该怎么用,引源码当依据的主张照官方文档再问一次。一道题里只要有一边会取代已定 ADR、与陛下原话相抵、或给用户的体验不同,整题只有陛下能拍——不论宰相选哪边,都等陛下原话。
|
|
12
12
|
|
|
13
13
|
**四、改稿**:答案齐了,你把它们落进 issue 正文——只落答案定下的,不夹带答案之外的新决定。
|
|
14
14
|
|
package/src/review-submission.ts
CHANGED
|
@@ -52,7 +52,7 @@ export const reviewSubmissionSchema = withTerminatingOutputDeclarations(
|
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* #1195 notary clause row: original ticket text, owner uuid (or null),
|
|
55
|
-
*
|
|
55
|
+
* the runner line that utterance answered and what it asked about, and a one-line derivation.
|
|
56
56
|
* Generation-required on notary only; package still records as-is.
|
|
57
57
|
*/
|
|
58
58
|
export const notaryClauseItemSchema = Type.Object(
|
|
@@ -63,9 +63,16 @@ export const notaryClauseItemSchema = Type.Object(
|
|
|
63
63
|
ownerUuid: Type.Union([Type.String(), Type.Null()], {
|
|
64
64
|
description: "推出该条的陛下原话 uuid;无原话则 null",
|
|
65
65
|
}),
|
|
66
|
+
answered: Type.Union([Type.String(), Type.Null()], {
|
|
67
|
+
description:
|
|
68
|
+
"那句原话所答的 runner 句原文(问句、选项、表格行,照抄);陛下独立提出、不是在答谁的,填 null",
|
|
69
|
+
}),
|
|
70
|
+
askedObject: Type.Union([Type.String(), Type.Null()], {
|
|
71
|
+
description: "所答那句问的是哪件事(它的对象);answered 为 null 时同为 null",
|
|
72
|
+
}),
|
|
66
73
|
derivation: Type.String({
|
|
67
74
|
description:
|
|
68
|
-
"
|
|
75
|
+
"一句推导:从原话哪个意思到该条款。answered 不为 null 时,条款的对象须在 askedObject 之内,或另有原话点名更大的对象,ownerUuid 才站得住,否则填 null;陛下独立提出的原话直接按它的意思推",
|
|
69
76
|
}),
|
|
70
77
|
},
|
|
71
78
|
{ additionalProperties: true },
|