clearai-dsh 0.3.0 → 0.4.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.
- package/CHANGELOG.md +147 -0
- package/README.md +28 -28
- package/README.zh-CN.md +28 -28
- package/lib/client.js +861 -2555
- package/lib/domain-language.js +552 -48
- package/lib/fold.js +351 -1015
- package/lib/host.js +47 -557
- package/lib/invariant.js +9 -12
- package/lib/knowledge-view.js +363 -226
- package/lib/lang.js +81 -0
- package/package.json +1 -1
- package/presets/clearai/agent.cordis.yml +54 -82
- package/presets/clearai/clearai.patch.yml +54 -82
- package/presets/clearai/plugins/clearai-kernel.js +1590 -5437
- package/presets/clearai/plugins/ontology.js +56 -14
- package/presets/clearai/plugins/prompts.js +73 -363
- package/presets/clearai/skills/clearai-loop/SKILL.md +73 -59
- package/presets/clearai/plugins/brain.js +0 -547
- package/presets/clearai/plugins/commands.js +0 -199
- package/presets/clearai/template/knowledge/README.md +0 -25
- package/presets/clearai/template/memory/README.md +0 -34
- package/presets/clearai/template/project.md +0 -49
- package/presets/clearai/template/skills/README.md +0 -37
- package/presets/clearai/template/skills/chart-diagram-qa/SKILL.md +0 -43
- package/presets/clearai/template/skills/citation-management/SKILL.md +0 -73
- package/presets/clearai/template/skills/citation-management/references/bibtex_formatting.md +0 -908
- package/presets/clearai/template/skills/citation-management/references/citation_validation.md +0 -794
- package/presets/clearai/template/skills/citation-management/references/google_scholar_search.md +0 -725
- package/presets/clearai/template/skills/citation-management/references/metadata_extraction.md +0 -870
- package/presets/clearai/template/skills/citation-management/references/pubmed_search.md +0 -839
- package/presets/clearai/template/skills/citation-management/scripts/doi_to_bibtex.py +0 -204
- package/presets/clearai/template/skills/citation-management/scripts/extract_metadata.py +0 -569
- package/presets/clearai/template/skills/citation-management/scripts/format_bibtex.py +0 -349
- package/presets/clearai/template/skills/citation-management/scripts/generate_schematic.py +0 -139
- package/presets/clearai/template/skills/citation-management/scripts/generate_schematic_ai.py +0 -817
- package/presets/clearai/template/skills/citation-management/scripts/search_google_scholar.py +0 -282
- package/presets/clearai/template/skills/citation-management/scripts/search_pubmed.py +0 -398
- package/presets/clearai/template/skills/citation-management/scripts/validate_citations.py +0 -497
- package/presets/clearai/template/skills/data-analysis/SKILL.md +0 -92
- package/presets/clearai/template/skills/data-analysis/checklists/readiness_check.md +0 -23
- package/presets/clearai/template/skills/data-analysis/templates/analysis_report.md.tpl +0 -63
- package/presets/clearai/template/skills/data-analysis/templates/cleaning_rules_draft.yaml.tpl +0 -32
- package/presets/clearai/template/skills/data-analysis/templates/data_dictionary.md.tpl +0 -12
- package/presets/clearai/template/skills/data-analysis/templates/domain_knowledge_template.md.tpl +0 -316
- package/presets/clearai/template/skills/data-analysis/templates/feature_candidates.json.tpl +0 -20
- package/presets/clearai/template/skills/data-analysis/templates/quality_scorecard.md.tpl +0 -30
- package/presets/clearai/template/skills/data-analysis/workflows/01-data-profiling.md +0 -42
- package/presets/clearai/template/skills/data-analysis/workflows/02-quality-audit.md +0 -36
- package/presets/clearai/template/skills/data-analysis/workflows/03-physical-correlation.md +0 -25
- package/presets/clearai/template/skills/data-analysis/workflows/04-unstructured-mining.md +0 -26
- package/presets/clearai/template/skills/data-qa-analysis/SKILL.md +0 -102
- package/presets/clearai/template/skills/data-qa-analysis/checklists/readiness_check.md +0 -62
- package/presets/clearai/template/skills/data-qa-analysis/templates/best_in_class_report.md.tpl +0 -56
- package/presets/clearai/template/skills/data-qa-analysis/templates/cleaning_rules_draft.yaml.tpl +0 -56
- package/presets/clearai/template/skills/data-qa-analysis/templates/data_dictionary.md.tpl +0 -13
- package/presets/clearai/template/skills/data-qa-analysis/templates/data_source_inventory_and_lineage.md.tpl +0 -146
- package/presets/clearai/template/skills/data-qa-analysis/templates/data_status_report.md.tpl +0 -60
- package/presets/clearai/template/skills/data-qa-analysis/templates/steady_state_rules.yaml.tpl +0 -41
- package/presets/clearai/template/skills/data-qa-analysis/templates/subsystem_registry.md.tpl +0 -101
- package/presets/clearai/template/skills/data-qa-analysis/templates/unified_execution_plan.md.tpl +0 -100
- package/presets/clearai/template/skills/data-qa-analysis/workflows/01-data-source-inventory-and-lineage.md +0 -194
- package/presets/clearai/template/skills/data-qa-analysis/workflows/02-data-alignment-and-tag-semantics.md +0 -122
- package/presets/clearai/template/skills/data-qa-analysis/workflows/03-steady-state-identification.md +0 -126
- package/presets/clearai/template/skills/data-qa-analysis/workflows/04-consumption-analysis.md +0 -152
- package/presets/clearai/template/skills/data-qa-analysis/workflows/05-best-in-class-and-optimization-space.md +0 -78
- package/presets/clearai/template/skills/domain-presearch/SKILL.md +0 -131
- package/presets/clearai/template/skills/domain-presearch/checklists/domain_checklist.md +0 -24
- package/presets/clearai/template/skills/domain-presearch/references/figure_code.md +0 -78
- package/presets/clearai/template/skills/domain-presearch/references/strategic_frameworks.md +0 -38
- package/presets/clearai/template/skills/exploration-loop/SKILL.md +0 -81
- package/presets/clearai/template/skills/exploratory-data-analysis/SKILL.md +0 -77
- package/presets/clearai/template/skills/exploratory-data-analysis/references/bioinformatics_genomics_formats.md +0 -664
- package/presets/clearai/template/skills/exploratory-data-analysis/references/chemistry_molecular_formats.md +0 -664
- package/presets/clearai/template/skills/exploratory-data-analysis/references/general_scientific_formats.md +0 -518
- package/presets/clearai/template/skills/exploratory-data-analysis/references/microscopy_imaging_formats.md +0 -620
- package/presets/clearai/template/skills/exploratory-data-analysis/references/proteomics_metabolomics_formats.md +0 -517
- package/presets/clearai/template/skills/exploratory-data-analysis/references/spectroscopy_analytical_formats.md +0 -633
- package/presets/clearai/template/skills/exploratory-data-analysis/scripts/eda_analyzer.py +0 -547
- package/presets/clearai/template/skills/hypothesis-generation/SKILL.md +0 -73
- package/presets/clearai/template/skills/hypothesis-generation/references/experimental_design_patterns.md +0 -329
- package/presets/clearai/template/skills/hypothesis-generation/references/hypothesis_quality_criteria.md +0 -198
- package/presets/clearai/template/skills/hypothesis-generation/references/literature_search_strategies.md +0 -622
- package/presets/clearai/template/skills/hypothesis-generation/scripts/generate_schematic.py +0 -139
- package/presets/clearai/template/skills/hypothesis-generation/scripts/generate_schematic_ai.py +0 -817
- package/presets/clearai/template/skills/literature-review/SKILL.md +0 -72
- package/presets/clearai/template/skills/literature-review/references/citation_styles.md +0 -166
- package/presets/clearai/template/skills/literature-review/references/database_strategies.md +0 -455
- package/presets/clearai/template/skills/literature-review/scripts/generate_pdf.py +0 -176
- package/presets/clearai/template/skills/literature-review/scripts/generate_schematic.py +0 -139
- package/presets/clearai/template/skills/literature-review/scripts/generate_schematic_ai.py +0 -817
- package/presets/clearai/template/skills/literature-review/scripts/search_databases.py +0 -303
- package/presets/clearai/template/skills/literature-review/scripts/verify_citations.py +0 -221
- package/presets/clearai/template/skills/paper-lookup/SKILL.md +0 -59
- package/presets/clearai/template/skills/paper-lookup/references/arxiv.md +0 -161
- package/presets/clearai/template/skills/paper-lookup/references/biorxiv.md +0 -118
- package/presets/clearai/template/skills/paper-lookup/references/core.md +0 -150
- package/presets/clearai/template/skills/paper-lookup/references/crossref.md +0 -181
- package/presets/clearai/template/skills/paper-lookup/references/medrxiv.md +0 -104
- package/presets/clearai/template/skills/paper-lookup/references/openalex.md +0 -174
- package/presets/clearai/template/skills/paper-lookup/references/pmc.md +0 -152
- package/presets/clearai/template/skills/paper-lookup/references/pubmed.md +0 -124
- package/presets/clearai/template/skills/paper-lookup/references/semantic-scholar.md +0 -203
- package/presets/clearai/template/skills/paper-lookup/references/unpaywall.md +0 -127
- package/presets/clearai/template/skills/process-presearch/SKILL.md +0 -196
- package/presets/clearai/template/skills/process-presearch/checklists/process_checklist.md +0 -18
- package/presets/clearai/template/skills/process-presearch/references/figure_code.md +0 -107
- package/presets/clearai/template/skills/process-presearch/references/source_attribution_example.md +0 -22
- package/presets/clearai/template/skills/process-understanding-extraction/SKILL.md +0 -69
- package/presets/clearai/template/skills/process-understanding-extraction/checklists/readiness_check.md +0 -34
- package/presets/clearai/template/skills/process-understanding-extraction/templates/docx_raw_dump_extractor.py.tpl +0 -132
- package/presets/clearai/template/skills/process-understanding-extraction/templates/entity_map_unit_topology.json.tpl +0 -86
- package/presets/clearai/template/skills/process-understanding-extraction/templates/process_brief.md.tpl +0 -89
- package/presets/clearai/template/skills/process-understanding-extraction/templates/process_brief_builder_from_raw_dump.py.tpl +0 -203
- package/presets/clearai/template/skills/process-understanding-extraction/templates/process_flow_mermaid.md.tpl +0 -41
- package/presets/clearai/template/skills/process-understanding-extraction/templates/unified_execution_plan.md.tpl +0 -53
- package/presets/clearai/template/skills/process-understanding-extraction/workflows/01-process-doc-discovery.md +0 -173
- package/presets/clearai/template/skills/process-understanding-extraction/workflows/02-process-understanding-and-diagramming.md +0 -106
- package/presets/clearai/template/skills/scientific-brainstorming/SKILL.md +0 -64
- package/presets/clearai/template/skills/scientific-brainstorming/references/brainstorming_methods.md +0 -326
- package/presets/clearai/template/skills/scientific-critical-thinking/SKILL.md +0 -72
- package/presets/clearai/template/skills/scientific-critical-thinking/references/common_biases.md +0 -364
- package/presets/clearai/template/skills/scientific-critical-thinking/references/evidence_hierarchy.md +0 -485
- package/presets/clearai/template/skills/scientific-critical-thinking/references/experimental_design.md +0 -496
- package/presets/clearai/template/skills/scientific-critical-thinking/references/logical_fallacies.md +0 -478
- package/presets/clearai/template/skills/scientific-critical-thinking/references/scientific_method.md +0 -169
- package/presets/clearai/template/skills/scientific-critical-thinking/references/statistical_pitfalls.md +0 -506
- package/presets/clearai/template/skills/skill-creator/SKILL.md +0 -109
- package/presets/clearai/template/skills/skill-creator/references/authoring-guide.md +0 -89
- package/presets/clearai/template/skills/statistical-analysis/SKILL.md +0 -79
- package/presets/clearai/template/skills/statistical-analysis/references/assumptions_and_diagnostics.md +0 -369
- package/presets/clearai/template/skills/statistical-analysis/references/bayesian_statistics.md +0 -653
- package/presets/clearai/template/skills/statistical-analysis/references/effect_sizes_and_power.md +0 -578
- package/presets/clearai/template/skills/statistical-analysis/references/reporting_standards.md +0 -469
- package/presets/clearai/template/skills/statistical-analysis/references/test_selection_guide.md +0 -129
- package/presets/clearai/template/skills/statistical-analysis/scripts/assumption_checks.py +0 -538
- package/presets/clearai/template/skills/web-artifact/SKILL.md +0 -165
- package/presets/clearai/template/skills/web-artifact/assets/renderer/renderer.css +0 -229
- package/presets/clearai/template/skills/web-artifact/assets/renderer/renderer.js +0 -373
- package/presets/clearai/template/skills/web-artifact/assets/vendor/elkjs/LICENSE +0 -263
- package/presets/clearai/template/skills/web-artifact/assets/vendor/elkjs/UPSTREAM.md +0 -26
- package/presets/clearai/template/skills/web-artifact/assets/vendor/elkjs/elk.bundled.js +0 -6605
- package/presets/clearai/template/skills/web-artifact/references/when-drawing-a-topology.md +0 -150
- package/presets/clearai/template/skills/web-artifact/references/when-the-page-must-work-offline.md +0 -62
- package/presets/clearai/template/skills/web-artifact/scripts/check_artifact.py +0 -167
- package/presets/clearai/template/skills/web-artifact/scripts/render_topology.js +0 -272
- package/presets/clearai/template/skills/what-if-oracle/LICENSE.txt +0 -5
- package/presets/clearai/template/skills/what-if-oracle/SKILL.md +0 -72
- package/presets/clearai/template/skills/what-if-oracle/references/scenario-templates.md +0 -154
|
@@ -145,23 +145,65 @@ export function validateOntology(spec) {
|
|
|
145
145
|
return problems
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
/**
|
|
149
|
+
* 货架那份说明的英文版:键是声明里的中文原文(声明本身只有一份,是数据)。
|
|
150
|
+
* 只收货架上真会印出来的那几处:总说明、对象说明、落点、五级说明。
|
|
151
|
+
*/
|
|
152
|
+
const ENGLISH = new Map([
|
|
153
|
+
['九个对象 + 五级验证。声明是数据;实例状态由事实算出来(见文件头那条红线)。', 'Nine objects plus five verification levels. The declaration is data; instance states are computed from facts.'],
|
|
154
|
+
['只靠推理的快速合理性检查;依据必须可复查', 'A quick plausibility check by reasoning alone; the basis must be checkable'],
|
|
155
|
+
['已有知识:文献、数据库是否已回答或已否定', 'Existing knowledge: whether literature or databases already answer or rule it out'],
|
|
156
|
+
['已有数据或小规模计算', 'Existing data or a small computation'],
|
|
157
|
+
['新产生且可重跑的证据;判据先写后做,裁决由独立评估者写', 'Newly produced, re-runnable evidence; criteria written before the work, verdict written by an independent evaluator'],
|
|
158
|
+
['不可重复或来自外部的证据;先登记标准,人放行(原生审批栈的权威记录)', 'Unrepeatable or external evidence; criteria registered first, released by a person (the native approval stack is the authoritative record)'],
|
|
159
|
+
['这一平面的一等对象(那一侧记在 goal 文档里);status 是派生值,声明里没有它的住处', 'A first-class object (recorded in the goal document); status is derived and has no place in the declaration'],
|
|
160
|
+
[
|
|
161
|
+
'状态由证据算:**confirmed 那条边的落账在 fact 对象那边**(升格成事实 ⇒ 面板把它读成已确认),假设自己没有那条变更;refuted 与 retracted 都是黏性终态(与「目标侧被推翻的计划不可复活」同一个病同一个修法),而 retracted 是**人的动作**、落账在 fact 对象上(`fact/retracted`);不声明 status',
|
|
162
|
+
'Status is computed from evidence: **the confirmed edge is recorded on the fact object** (promoted to a fact, so the panel reads it as confirmed); the judgment itself has no such change. refuted and retracted are sticky terminal states, and retracted is **a person\'s act**, recorded on the fact object (`fact/retracted`); status is not declared',
|
|
163
|
+
],
|
|
164
|
+
['「受阻」是字段不是状态(它会被清掉);授权记号也是字段——有记号或已推进过都算授权', '"Blocked" is a field, not a state (it gets cleared); the authorization mark is a field too: a mark or earlier progress both count as authorization'],
|
|
165
|
+
[
|
|
166
|
+
'这一平面上它同时就是「一次验证」(step.tests = hypothesis + level);没有「降级重做」那条边:秩明令降级不可表示;「受阻」不在步的状态里——它是计划上的字段(见 plan 的自环)',
|
|
167
|
+
'A step is also one verification (step.tests = hypothesis + level); there is no "downgrade and redo" edge; "blocked" is not a step state but a field on the plan (see the plan self-loop)',
|
|
168
|
+
],
|
|
169
|
+
['fold.hypotheses(goal/set 一起落)', 'fold.hypotheses (recorded together with goal/set)'],
|
|
170
|
+
['fold.materials(收下的)+ 准入账(不收的)', 'fold.materials (accepted) + intake ledger (rejected)'],
|
|
171
|
+
[
|
|
172
|
+
'`received` 活在一次交付调用之内(候选观测):收下的才成为对象,不收的只留一条准入事实——「不收」不是对象的终态,是账本上的一行。来源取值与生产者**逐一对齐**(见 `source` 字段的说明):类型只声明今天真能发生的那些',
|
|
173
|
+
'`received` lives inside one delivery call (a candidate observation): only accepted ones become objects; a rejected one leaves just an intake fact, a line in the ledger rather than a terminal state. Source values match their producers **one to one**: the type declares only what can actually happen today',
|
|
174
|
+
],
|
|
175
|
+
['写下就不改;重评产生新的一条。做的人与判的人按等级分开(L3 以上只能由独立评估者写)', 'Never changed once written; a re-evaluation adds a new one. Who works and who judges are split by level (from L3 up, only an independent evaluator writes)'],
|
|
176
|
+
['与步骤上的收敛记录分开;anchor 说这条证据钉在哪(独立裁决 / 物证)', 'Kept apart from the step\'s own record; anchor says what the evidence is pinned to (an independent verdict or an output)'],
|
|
177
|
+
[
|
|
178
|
+
'升格由系统做;每条带边界(scope)与等级,下一轮作为「已知」引用时先看边界。货架在 clear/knowledge/facts/INDEX.md(面板「事实」那一格读的是同一张表)。被推翻只**标记**(refuted,派生),撤回是**人的动作**(retracted,落 fact/retracted)——两件事分开记,因为数据自己也可能错',
|
|
179
|
+
'Promotion is done by the system; each fact carries a boundary (scope) and a level, and the boundary is checked before citing it as known. The shelf is clear/knowledge/facts/INDEX.md (the panel reads the same table). Refutation only **marks** a fact (refuted, derived); retraction is **a person\'s act** (retracted, recorded as fact/retracted). They are kept apart because the data itself can be wrong',
|
|
180
|
+
],
|
|
181
|
+
['fold.releases(原生审批栈的审计对是权威记录)', 'fold.releases (the native approval stack is the authoritative record)'],
|
|
182
|
+
['L4 的人放行:一次一放行;步级的事实一落,同一步重试不再问人)', 'A person\'s release for L4: one release per delivery; once the step-level fact lands, retrying the same step does not ask again'],
|
|
183
|
+
])
|
|
184
|
+
|
|
185
|
+
/** 一份给人/给模型读的说明(markdown)。货架写的就是它;`lang` 是会话的语言。 */
|
|
186
|
+
export function describeOntology(spec, lang = 'zh') {
|
|
187
|
+
const en = lang === 'en'
|
|
188
|
+
const say = (text) => (en ? (ENGLISH.get(text) ?? text) : text)
|
|
189
|
+
const list = (items) => items.join(en ? ', ' : '、')
|
|
190
|
+
const lines = en ? [`# Ontology: ${spec.id}`, '', say(spec.note), '', '## Objects'] : [`# 本体:${spec.id}`, '', spec.note, '', '## 对象']
|
|
151
191
|
for (const obj of spec.objects) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (obj.
|
|
192
|
+
const terminal = obj.terminal.length === 0 ? (en ? '(none)' : '(无)') : list(obj.terminal)
|
|
193
|
+
lines.push('', `### ${obj.name}`, en ? `- States: ${obj.states.join(' → ')}` : `- 状态:${obj.states.join(' → ')}`, en ? `- Initial: ${obj.initial} · terminal: ${terminal}` : `- 初始:${obj.initial} · 终态:${terminal}`)
|
|
194
|
+
if (obj.persistence !== '') lines.push(en ? `- Stored in: ${say(obj.persistence)} (no new storage)` : `- 落点:${obj.persistence}(不新建存储)`)
|
|
195
|
+
if (obj.event_kind !== '') lines.push(en ? `- Each transition emits: ${obj.event_kind}` : `- 每次转移发:${obj.event_kind}`)
|
|
155
196
|
for (const edge of obj.transitions) {
|
|
156
|
-
|
|
197
|
+
const guards = edge.guards.length === 0 ? '' : en ? ` (guards: ${list(edge.guards)})` : `(守卫:${list(edge.guards)})`
|
|
198
|
+
lines.push(en ? ` - ${edge.from} → ${edge.to}: started by **${edge.actor}** on ${edge.on}${guards}` : ` - ${edge.from} → ${edge.to}:由 **${edge.actor}** 发起,当 ${edge.on}${guards}`)
|
|
157
199
|
}
|
|
158
|
-
if (obj.fields.length > 0) lines.push(
|
|
159
|
-
if (obj.note !== '') lines.push(`- 说明:${obj.note}`)
|
|
200
|
+
if (obj.fields.length > 0) lines.push(`${en ? '- Fields: ' : '- 字段:'}${list(obj.fields.map((item) => `${item.name}${item.values === null ? '' : `(${item.values.join('|')})`}`))}`)
|
|
201
|
+
if (obj.note !== '') lines.push(en ? `- Note: ${say(obj.note)}` : `- 说明:${obj.note}`)
|
|
160
202
|
}
|
|
161
203
|
if (spec.levels.length > 0) {
|
|
162
|
-
lines.push('', '## 五级')
|
|
204
|
+
lines.push('', en ? '## Five levels' : '## 五级')
|
|
163
205
|
for (const item of spec.levels) {
|
|
164
|
-
lines.push(`- **${item.id}**
|
|
206
|
+
lines.push(en ? `- **${item.id}** judge ${item.judge} · sources ${list(item.sources)} · gate ${item.gate}: ${say(item.note)}` : `- **${item.id}** 判者 ${item.judge} · 来源 ${list(item.sources)} · 门 ${item.gate} —— ${item.note}`)
|
|
165
207
|
}
|
|
166
208
|
}
|
|
167
209
|
return `${lines.join('\n')}\n`
|
|
@@ -256,12 +298,12 @@ export const VERIFICATION_LOOP = ontology('verification-loop', {
|
|
|
256
298
|
transition('received', 'rejected', 'system', 'source_not_admissible', [], '不收:只在准入账(`admission/checked`)上留痕,不落观测对象', 'admission/checked'),
|
|
257
299
|
],
|
|
258
300
|
/**
|
|
259
|
-
* `source` **只声明真有生产者的取值**:内核只写过 `self`(
|
|
301
|
+
* `source` **只声明真有生产者的取值**:内核只写过 `self`(主线的交付)。
|
|
260
302
|
* 一个取值要存在,必须同时有**生产者**与**消费它的决策**——否则它就是类型里的一句假话
|
|
261
303
|
* (声明了「有种观测来自人上传」,而那条路根本不存在)。`human_upload` / `file_drop` /
|
|
262
304
|
* `callback` / `pull` 是「后续候选」,等它们各自的入口真的接上再回来加。
|
|
263
305
|
*/
|
|
264
|
-
fields: [field('content'), field('source', { values: ['self'
|
|
306
|
+
fields: [field('content'), field('source', { values: ['self'] }), field('ref')],
|
|
265
307
|
persistence: 'fold.materials(收下的)+ 准入账(不收的)',
|
|
266
308
|
event_kind: 'observation/recorded',
|
|
267
309
|
note: '`received` 活在一次交付调用之内(候选观测):收下的才成为对象,不收的只留一条准入事实——「不收」不是对象的终态,是账本上的一行。来源取值与生产者**逐一对齐**(见 `source` 字段的说明):类型只声明今天真能发生的那些',
|
|
@@ -312,7 +354,7 @@ export const VERIFICATION_LOOP = ontology('verification-loop', {
|
|
|
312
354
|
initial: 'granted',
|
|
313
355
|
terminal: ['granted'],
|
|
314
356
|
transitions: [],
|
|
315
|
-
fields: [field('step', { required: false }), field('
|
|
357
|
+
fields: [field('step', { required: false }), field('call'), field('via', { values: ['approval'] })],
|
|
316
358
|
persistence: 'fold.releases(原生审批栈的审计对是权威记录)',
|
|
317
359
|
event_kind: 'human/released',
|
|
318
360
|
note: 'L4 的人放行:一次一放行;步级的事实一落,同一步重试不再问人)',
|