scene-capability-engine 3.6.19 → 3.6.20
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 +7 -0
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/docs/command-reference.md +1 -0
- package/docs/magicball-capability-library.md +11 -0
- package/lib/commands/capability.js +40 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,10 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.6.20] - 2026-03-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Capability catalog entries now expose pre-publish readiness UI fields for badge rendering and sorting.
|
|
14
|
+
- Magicball capability library guide now documents list-level publish readiness fields.
|
|
15
|
+
|
|
10
16
|
## [3.6.19] - 2026-03-06
|
|
11
17
|
|
|
12
18
|
### Added
|
|
13
19
|
- Capability map/register payloads now expose `release_readiness` with structured blocking reasons for publish UI.
|
|
20
|
+
- Capability catalog payloads now expose `release_readiness_ui` for pre-publish status badges and sorting.
|
|
14
21
|
- Magicball capability docs now define release blocker rendering for capability publish pages.
|
|
15
22
|
|
|
16
23
|
## [3.6.18] - 2026-03-06
|
package/README.md
CHANGED
package/README.zh.md
CHANGED
|
@@ -1898,6 +1898,7 @@ Schema references:
|
|
|
1898
1898
|
|
|
1899
1899
|
`catalog/list/search/show/match/use` responses now include `ontology_core` and `ontology_core_ui` so UI can render triad readiness directly.
|
|
1900
1900
|
`capability map/register` responses now include `release_readiness` so UI can render blocking reasons before publish.
|
|
1901
|
+
Catalog payloads also expose `release_readiness_ui` for pre-publish sorting and status badges.
|
|
1901
1902
|
|
|
1902
1903
|
```bash
|
|
1903
1904
|
# List capability templates
|
|
@@ -146,6 +146,17 @@ sce capability use --template <template-id> --spec <spec-id> --apply --json
|
|
|
146
146
|
|
|
147
147
|
若需要“自动落地写入 spec 任务”的强制执行模式,可以在后续版本加 `--apply` 开关。
|
|
148
148
|
|
|
149
|
+
### release_readiness_ui(列表状态)
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"publish_ready": false,
|
|
153
|
+
"blocking_count": 1,
|
|
154
|
+
"blocking_ids": ["ontology-core-triads"],
|
|
155
|
+
"blocking_reasons": ["missing required ontology triads"],
|
|
156
|
+
"blocking_missing": ["decision_strategy"]
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
149
160
|
### release_readiness(发布阻断原因)
|
|
150
161
|
```json
|
|
151
162
|
{
|
|
@@ -432,10 +432,27 @@ function enrichCapabilityTemplateForUi(template) {
|
|
|
432
432
|
const ontologyCore = template && template.ontology_core
|
|
433
433
|
? template.ontology_core
|
|
434
434
|
: buildCoreOntologySummary(template && template.ontology_scope ? template.ontology_scope : createEmptyOntologyScope());
|
|
435
|
+
const releaseReadiness = template && template.release_readiness
|
|
436
|
+
? template.release_readiness
|
|
437
|
+
: {
|
|
438
|
+
ready: ontologyCore.ready === true,
|
|
439
|
+
blockers: ontologyCore.ready === true
|
|
440
|
+
? []
|
|
441
|
+
: [{
|
|
442
|
+
id: 'ontology-core-triads',
|
|
443
|
+
severity: 'blocking',
|
|
444
|
+
reason: 'missing required ontology triads',
|
|
445
|
+
missing: Array.isArray(ontologyCore.missing) ? ontologyCore.missing : []
|
|
446
|
+
}],
|
|
447
|
+
ontology_core: ontologyCore,
|
|
448
|
+
ontology_core_ui: buildOntologyCoreUiState(ontologyCore)
|
|
449
|
+
};
|
|
435
450
|
return {
|
|
436
451
|
...template,
|
|
437
452
|
ontology_core: ontologyCore,
|
|
438
|
-
ontology_core_ui: buildOntologyCoreUiState(ontologyCore)
|
|
453
|
+
ontology_core_ui: buildOntologyCoreUiState(ontologyCore),
|
|
454
|
+
release_readiness: releaseReadiness,
|
|
455
|
+
release_readiness_ui: buildCapabilityReleaseReadinessUi(releaseReadiness)
|
|
439
456
|
};
|
|
440
457
|
}
|
|
441
458
|
|
|
@@ -464,6 +481,20 @@ function buildCapabilityReleaseReadiness(templateCandidate) {
|
|
|
464
481
|
};
|
|
465
482
|
}
|
|
466
483
|
|
|
484
|
+
function buildCapabilityReleaseReadinessUi(readiness) {
|
|
485
|
+
const details = readiness && typeof readiness === 'object'
|
|
486
|
+
? readiness
|
|
487
|
+
: { ready: true, blockers: [] };
|
|
488
|
+
const blockers = Array.isArray(details.blockers) ? details.blockers : [];
|
|
489
|
+
return {
|
|
490
|
+
publish_ready: details.ready === true,
|
|
491
|
+
blocking_count: blockers.length,
|
|
492
|
+
blocking_ids: blockers.map((item) => item && item.id).filter(Boolean),
|
|
493
|
+
blocking_reasons: blockers.map((item) => item && item.reason).filter(Boolean),
|
|
494
|
+
blocking_missing: blockers.flatMap((item) => Array.isArray(item && item.missing) ? item.missing : [])
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
|
|
467
498
|
async function loadSceneIndexFromFile(projectPath, fileSystem) {
|
|
468
499
|
const indexPath = path.join(projectPath, '.sce', 'spec-governance', 'scene-index.json');
|
|
469
500
|
if (!await fileSystem.pathExists(indexPath)) {
|
|
@@ -1462,5 +1493,12 @@ module.exports = {
|
|
|
1462
1493
|
runCapabilityExtractCommand,
|
|
1463
1494
|
runCapabilityScoreCommand,
|
|
1464
1495
|
runCapabilityMapCommand,
|
|
1465
|
-
runCapabilityRegisterCommand
|
|
1496
|
+
runCapabilityRegisterCommand,
|
|
1497
|
+
listCapabilityCatalog,
|
|
1498
|
+
searchCapabilityCatalog,
|
|
1499
|
+
showCapabilityTemplate,
|
|
1500
|
+
matchCapabilityTemplates,
|
|
1501
|
+
useCapabilityTemplate,
|
|
1502
|
+
enrichCapabilityTemplateForUi,
|
|
1503
|
+
buildCapabilityReleaseReadinessUi
|
|
1466
1504
|
};
|
package/package.json
CHANGED