scene-capability-engine 3.6.29 → 3.6.36
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 +103 -1
- package/README.md +119 -122
- package/README.zh.md +123 -121
- package/bin/scene-capability-engine.js +11 -0
- package/docs/README.md +21 -32
- package/docs/agent-runtime/magicball-contract-index.md +25 -0
- package/docs/auto-refactor-index.md +384 -0
- package/docs/command-reference.md +96 -2
- package/docs/magicball-adaptation-task-checklist-v1.md +385 -0
- package/docs/magicball-app-bundle-sqlite-and-command-draft.md +539 -0
- package/docs/magicball-capability-iteration-api.md +2 -0
- package/docs/magicball-capability-iteration-ui.md +3 -0
- package/docs/magicball-capability-library.md +2 -0
- package/docs/magicball-cli-invocation-examples.md +336 -0
- package/docs/magicball-frontend-state-and-command-mapping.md +244 -0
- package/docs/magicball-integration-doc-index.md +137 -0
- package/docs/magicball-integration-issue-tracker.md +218 -0
- package/docs/magicball-mode-home-and-ontology-empty-state-playbook.md +249 -0
- package/docs/magicball-sce-adaptation-guide.md +203 -0
- package/docs/magicball-task-feedback-timeline-guide.md +8 -0
- package/docs/magicball-three-mode-alignment-plan.md +551 -0
- package/docs/magicball-ui-surface-checklist.md +126 -0
- package/docs/magicball-write-auth-adaptation-guide.md +328 -0
- package/docs/refactor-completion-roadmap.md +116 -0
- package/docs/zh/README.md +27 -30
- package/docs/zh/refactor-completion-roadmap.md +116 -0
- package/lib/app/registry-config.js +73 -0
- package/lib/app/registry-sync-service.js +228 -0
- package/lib/auto/archive-schema-service.js +276 -0
- package/lib/auto/archive-summary.js +60 -0
- package/lib/auto/batch-goal-input-service.js +543 -0
- package/lib/auto/batch-output.js +201 -0
- package/lib/auto/batch-summary-storage-service.js +110 -0
- package/lib/auto/close-loop-batch-service.js +116 -0
- package/lib/auto/close-loop-controller-service.js +287 -0
- package/lib/auto/close-loop-program-service.js +283 -0
- package/lib/auto/close-loop-recovery-service.js +191 -0
- package/lib/auto/close-loop-session-storage-service.js +50 -0
- package/lib/auto/controller-lock-service.js +55 -0
- package/lib/auto/controller-output.js +32 -0
- package/lib/auto/controller-queue-service.js +127 -0
- package/lib/auto/controller-session-storage-service.js +105 -0
- package/lib/auto/governance-advisory-service.js +208 -0
- package/lib/auto/governance-close-loop-service.js +411 -0
- package/lib/auto/governance-maintenance-presenter.js +162 -0
- package/lib/auto/governance-maintenance-service.js +112 -0
- package/lib/auto/governance-session-presenter.js +70 -0
- package/lib/auto/governance-session-storage-service.js +198 -0
- package/lib/auto/governance-signals.js +139 -0
- package/lib/auto/governance-stats-presenter.js +337 -0
- package/lib/auto/governance-stats-service.js +115 -0
- package/lib/auto/governance-summary.js +703 -0
- package/lib/auto/handoff-capability-matrix-service.js +281 -0
- package/lib/auto/handoff-evidence-review-service.js +251 -0
- package/lib/auto/handoff-release-evidence-service.js +190 -0
- package/lib/auto/handoff-release-gate-history-loaders-service.js +502 -0
- package/lib/auto/handoff-release-gate-history-service.js +257 -0
- package/lib/auto/handoff-reporting-service.js +1407 -0
- package/lib/auto/handoff-run-service.js +486 -0
- package/lib/auto/handoff-snapshots-service.js +645 -0
- package/lib/auto/observability-service.js +132 -0
- package/lib/auto/output-writer.js +34 -0
- package/lib/auto/program-auto-remediation-service.js +130 -0
- package/lib/auto/program-diagnostics.js +138 -0
- package/lib/auto/program-governance-helpers.js +306 -0
- package/lib/auto/program-governance-loop-service.js +413 -0
- package/lib/auto/program-output.js +106 -0
- package/lib/auto/program-summary.js +183 -0
- package/lib/auto/recovery-memory-service.js +684 -0
- package/lib/auto/recovery-selection-service.js +52 -0
- package/lib/auto/retention-policy.js +98 -0
- package/lib/auto/session-metrics.js +53 -0
- package/lib/auto/session-persistence-service.js +106 -0
- package/lib/auto/session-presenter.js +105 -0
- package/lib/auto/session-prune-service.js +190 -0
- package/lib/auto/session-query-service.js +249 -0
- package/lib/auto/spec-protection.js +141 -0
- package/lib/capability/catalog-service.js +248 -0
- package/lib/capability/inventory-service.js +100 -0
- package/lib/commands/app.js +911 -0
- package/lib/commands/assurance.js +212 -0
- package/lib/commands/auto.js +1091 -11063
- package/lib/commands/capability.js +81 -466
- package/lib/commands/mode.js +321 -0
- package/lib/commands/ontology.js +415 -0
- package/lib/commands/pm.js +422 -0
- package/lib/commands/scene.js +1 -1
- package/lib/commands/studio.js +147 -582
- package/lib/commands/timeline.js +6 -82
- package/lib/magicball/capability-inventory-view-model.js +213 -0
- package/lib/magicball/status-language.js +29 -0
- package/lib/magicball/task-feedback-model.js +113 -0
- package/lib/magicball/timeline-view-model.js +95 -0
- package/lib/ontology/seed-profiles.js +160 -0
- package/lib/scene/doctor-feedback.js +3541 -0
- package/lib/state/sce-state-store.js +3369 -1200
- package/lib/studio/task-envelope.js +269 -0
- package/lib/studio/task-intent.js +149 -0
- package/package.json +1 -1
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
const BUILTIN_ONTOLOGY_SEED_PROFILES = Object.freeze({
|
|
2
|
+
'customer-order-demo': {
|
|
3
|
+
profile: 'customer-order-demo',
|
|
4
|
+
label: 'Customer Order Demo',
|
|
5
|
+
description: 'Starter triad for customer + order + inventory demo app.',
|
|
6
|
+
er: [
|
|
7
|
+
{
|
|
8
|
+
entity_id: 'Customer',
|
|
9
|
+
name: 'Customer',
|
|
10
|
+
display_name: '客户',
|
|
11
|
+
description: 'Customer master entity for order lifecycle.',
|
|
12
|
+
status: 'active',
|
|
13
|
+
key_fields: ['customer_id', 'name', 'status'],
|
|
14
|
+
relations: [{ target: 'Order', relation_type: 'one_to_many', cardinality: '1..n' }],
|
|
15
|
+
domain_scope: 'customer-order-demo',
|
|
16
|
+
risk_level: 'low'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
entity_id: 'Order',
|
|
20
|
+
name: 'Order',
|
|
21
|
+
display_name: '订单',
|
|
22
|
+
description: 'Order aggregate linking customer, line items, and fulfillment state.',
|
|
23
|
+
status: 'active',
|
|
24
|
+
key_fields: ['order_id', 'customer_id', 'status'],
|
|
25
|
+
relations: [
|
|
26
|
+
{ target: 'Customer', relation_type: 'many_to_one', cardinality: 'n..1' },
|
|
27
|
+
{ target: 'InventoryItem', relation_type: 'many_to_many', cardinality: 'n..n' }
|
|
28
|
+
],
|
|
29
|
+
domain_scope: 'customer-order-demo',
|
|
30
|
+
risk_level: 'medium'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
entity_id: 'InventoryItem',
|
|
34
|
+
name: 'InventoryItem',
|
|
35
|
+
display_name: '库存项',
|
|
36
|
+
description: 'Inventory item tracked during reservation and fulfillment.',
|
|
37
|
+
status: 'active',
|
|
38
|
+
key_fields: ['inventory_item_id', 'sku', 'available_qty'],
|
|
39
|
+
relations: [{ target: 'Order', relation_type: 'many_to_many', cardinality: 'n..n' }],
|
|
40
|
+
domain_scope: 'customer-order-demo',
|
|
41
|
+
risk_level: 'medium'
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
br: [
|
|
45
|
+
{
|
|
46
|
+
rule_id: 'BR-ORDER-001',
|
|
47
|
+
title: '订单提交前必须完成库存可用性检查',
|
|
48
|
+
scope: '订单提交',
|
|
49
|
+
rule_type: 'validation',
|
|
50
|
+
condition: '订单进入提交或确认阶段前',
|
|
51
|
+
consequence: '必须校验所有明细对应库存项的可用数量',
|
|
52
|
+
severity: 'high',
|
|
53
|
+
status: 'active',
|
|
54
|
+
entity_refs: ['Order', 'InventoryItem']
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
rule_id: 'BR-ORDER-002',
|
|
58
|
+
title: '客户状态异常时不得进入订单确认',
|
|
59
|
+
scope: '订单确认',
|
|
60
|
+
rule_type: 'governance',
|
|
61
|
+
condition: '客户状态不是 active',
|
|
62
|
+
consequence: '订单确认流程必须阻断并记录问题项',
|
|
63
|
+
severity: 'blocking',
|
|
64
|
+
status: 'active',
|
|
65
|
+
entity_refs: ['Customer', 'Order']
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
dl: [
|
|
69
|
+
{
|
|
70
|
+
chain_id: 'DL-ORDER-001',
|
|
71
|
+
title: '客户下单到库存确认决策链路',
|
|
72
|
+
description: 'Normalize customer/order/inventory checks before order confirmation.',
|
|
73
|
+
trigger: '新建订单并进入确认前校验',
|
|
74
|
+
decision_nodes: [
|
|
75
|
+
{ order: 1, name: '校验客户状态', description: '确认客户可下单' },
|
|
76
|
+
{ order: 2, name: '校验库存可用性', description: '确认库存数量足够' },
|
|
77
|
+
{ order: 3, name: '生成确认动作', description: '输出确认或阻断结果' }
|
|
78
|
+
],
|
|
79
|
+
outputs: ['order.confirmation_decision', 'inventory.reservation_action'],
|
|
80
|
+
status: 'active',
|
|
81
|
+
entity_refs: ['Customer', 'Order', 'InventoryItem'],
|
|
82
|
+
rule_refs: ['BR-ORDER-001', 'BR-ORDER-002'],
|
|
83
|
+
risk_level: 'medium'
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
demo: {
|
|
88
|
+
alias_of: 'customer-order-demo'
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
function normalizeString(value) {
|
|
93
|
+
if (typeof value !== 'string') {
|
|
94
|
+
return '';
|
|
95
|
+
}
|
|
96
|
+
return value.trim();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function resolveOntologySeedProfile(profileCandidate = '') {
|
|
100
|
+
const normalized = normalizeString(profileCandidate).toLowerCase();
|
|
101
|
+
if (!normalized) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const direct = BUILTIN_ONTOLOGY_SEED_PROFILES[normalized];
|
|
105
|
+
if (!direct) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
if (direct.alias_of) {
|
|
109
|
+
return BUILTIN_ONTOLOGY_SEED_PROFILES[direct.alias_of] || null;
|
|
110
|
+
}
|
|
111
|
+
return direct;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function listOntologySeedProfiles() {
|
|
115
|
+
return Object.entries(BUILTIN_ONTOLOGY_SEED_PROFILES)
|
|
116
|
+
.filter(([, value]) => !value.alias_of)
|
|
117
|
+
.map(([key, value]) => ({
|
|
118
|
+
profile: key,
|
|
119
|
+
label: value.label,
|
|
120
|
+
description: value.description,
|
|
121
|
+
er_count: Array.isArray(value.er) ? value.er.length : 0,
|
|
122
|
+
br_count: Array.isArray(value.br) ? value.br.length : 0,
|
|
123
|
+
dl_count: Array.isArray(value.dl) ? value.dl.length : 0
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async function applyOntologySeedProfile(profileCandidate, store) {
|
|
128
|
+
const profile = resolveOntologySeedProfile(profileCandidate);
|
|
129
|
+
if (!profile) {
|
|
130
|
+
throw new Error(`ontology seed profile not found: ${profileCandidate}`);
|
|
131
|
+
}
|
|
132
|
+
const written = {
|
|
133
|
+
er: [],
|
|
134
|
+
br: [],
|
|
135
|
+
dl: []
|
|
136
|
+
};
|
|
137
|
+
for (const item of profile.er || []) {
|
|
138
|
+
written.er.push(await store.upsertOntologyErAsset(item));
|
|
139
|
+
}
|
|
140
|
+
for (const item of profile.br || []) {
|
|
141
|
+
written.br.push(await store.upsertOntologyBrRule(item));
|
|
142
|
+
}
|
|
143
|
+
for (const item of profile.dl || []) {
|
|
144
|
+
written.dl.push(await store.upsertOntologyDlChain(item));
|
|
145
|
+
}
|
|
146
|
+
const triad = await store.buildOntologyTriadSummary({ limit: 1000 });
|
|
147
|
+
return {
|
|
148
|
+
profile: profile.profile,
|
|
149
|
+
label: profile.label,
|
|
150
|
+
written,
|
|
151
|
+
triad
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
module.exports = {
|
|
156
|
+
BUILTIN_ONTOLOGY_SEED_PROFILES,
|
|
157
|
+
resolveOntologySeedProfile,
|
|
158
|
+
listOntologySeedProfiles,
|
|
159
|
+
applyOntologySeedProfile
|
|
160
|
+
};
|