scene-capability-engine 3.6.23 → 3.6.24

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 CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.6.24] - 2026-03-06
11
+
12
+ ### Added
13
+ - Capability inventory payload now exposes fixed homepage query metadata (`query`) and sorting metadata (`sort`).
14
+ - Capability iteration schema and Magicball docs now define the fixed homepage inventory protocol.
15
+
10
16
  ## [3.6.23] - 2026-03-06
11
17
 
12
18
  ### Added
package/README.md CHANGED
@@ -218,5 +218,5 @@ MIT. See [LICENSE](LICENSE).
218
218
 
219
219
  ---
220
220
 
221
- **Version**: 3.6.23
221
+ **Version**: 3.6.24
222
222
  **Last Updated**: 2026-03-05
package/README.zh.md CHANGED
@@ -218,5 +218,5 @@ MIT,见 [LICENSE](LICENSE)。
218
218
 
219
219
  ---
220
220
 
221
- **版本**:3.6.23
221
+ **版本**:3.6.24
222
222
  **最后更新**:2026-03-05
@@ -21,6 +21,9 @@
21
21
  },
22
22
  "registry": {
23
23
  "$ref": "#/definitions/registry"
24
+ },
25
+ "inventory": {
26
+ "$ref": "#/definitions/inventory"
24
27
  }
25
28
  },
26
29
  "definitions": {
@@ -654,6 +657,153 @@
654
657
  }
655
658
  },
656
659
  "additionalProperties": false
660
+ },
661
+ "inventory": {
662
+ "type": "object",
663
+ "required": [
664
+ "mode",
665
+ "generated_at",
666
+ "query",
667
+ "scene_total",
668
+ "scene_count",
669
+ "sort",
670
+ "scenes"
671
+ ],
672
+ "properties": {
673
+ "mode": {
674
+ "const": "capability-inventory"
675
+ },
676
+ "generated_at": {
677
+ "type": "string"
678
+ },
679
+ "query": {
680
+ "type": "object",
681
+ "required": [
682
+ "protocol_version",
683
+ "scene_id",
684
+ "limit",
685
+ "sample_limit",
686
+ "filters"
687
+ ],
688
+ "properties": {
689
+ "protocol_version": {
690
+ "type": "string"
691
+ },
692
+ "scene_id": {
693
+ "type": [
694
+ "string",
695
+ "null"
696
+ ]
697
+ },
698
+ "limit": {
699
+ "type": "integer",
700
+ "minimum": 0
701
+ },
702
+ "sample_limit": {
703
+ "type": "integer",
704
+ "minimum": 0
705
+ },
706
+ "filters": {
707
+ "type": "object",
708
+ "required": [
709
+ "release_ready",
710
+ "missing_triad"
711
+ ],
712
+ "properties": {
713
+ "release_ready": {
714
+ "type": [
715
+ "boolean",
716
+ "null"
717
+ ]
718
+ },
719
+ "missing_triad": {
720
+ "type": [
721
+ "string",
722
+ "null"
723
+ ]
724
+ }
725
+ },
726
+ "additionalProperties": false
727
+ }
728
+ },
729
+ "additionalProperties": false
730
+ },
731
+ "scene_total": {
732
+ "type": "integer",
733
+ "minimum": 0
734
+ },
735
+ "scene_count": {
736
+ "type": "integer",
737
+ "minimum": 0
738
+ },
739
+ "sort": {
740
+ "type": "object",
741
+ "required": [
742
+ "strategy",
743
+ "triad_priority"
744
+ ],
745
+ "properties": {
746
+ "strategy": {
747
+ "type": "string"
748
+ },
749
+ "triad_priority": {
750
+ "type": "array",
751
+ "items": {
752
+ "type": "string"
753
+ }
754
+ }
755
+ },
756
+ "additionalProperties": false
757
+ },
758
+ "scenes": {
759
+ "type": "array",
760
+ "items": {
761
+ "type": "object",
762
+ "required": [
763
+ "scene_id",
764
+ "summary",
765
+ "source",
766
+ "ontology_scope",
767
+ "ontology_core",
768
+ "ontology_core_ui",
769
+ "release_readiness",
770
+ "release_readiness_ui",
771
+ "score_preview"
772
+ ],
773
+ "properties": {
774
+ "scene_id": {
775
+ "type": "string"
776
+ },
777
+ "summary": {
778
+ "type": "object"
779
+ },
780
+ "source": {
781
+ "type": "object"
782
+ },
783
+ "ontology_scope": {
784
+ "$ref": "#/definitions/ontology_scope"
785
+ },
786
+ "ontology_core": {
787
+ "$ref": "#/definitions/ontology_core"
788
+ },
789
+ "ontology_core_ui": {
790
+ "$ref": "#/definitions/ontology_core_ui"
791
+ },
792
+ "release_readiness": {
793
+ "type": "object"
794
+ },
795
+ "release_readiness_ui": {
796
+ "type": "object"
797
+ },
798
+ "score_preview": {
799
+ "type": "object"
800
+ }
801
+ },
802
+ "additionalProperties": false
803
+ }
804
+ }
805
+ },
806
+ "additionalProperties": false
657
807
  }
658
808
  },
659
809
  "additionalProperties": false
@@ -1875,6 +1875,8 @@ sce capability inventory --json
1875
1875
  sce capability inventory --release-ready false --missing-triad decision_strategy --json
1876
1876
  ```
1877
1877
 
1878
+ `capability inventory` returns fixed homepage query metadata in `query` and sorting metadata in `sort`.
1879
+
1878
1880
 
1879
1881
  Capability candidates are now evaluated against the ontology core triad by default:
1880
1882
  - entity + relation
@@ -177,3 +177,14 @@ sce capability register --input <template_file> --risk-level <level> --difficult
177
177
  4. `/api/capability/map`
178
178
  5. `/api/capability/register`
179
179
 
180
+
181
+ ## 6. Inventory 固定查询协议
182
+
183
+ - `query.protocol_version`:前后端协议版本
184
+ - `query.scene_id`:单场景盘点时使用,否则为 `null`
185
+ - `query.limit`:场景返回上限
186
+ - `query.sample_limit`:每个 spec 抽样任务上限
187
+ - `query.filters.release_ready`:发布可用性过滤
188
+ - `query.filters.missing_triad`:triad 缺口过滤
189
+ - `sort.strategy`:默认排序策略说明
190
+ - `sort.triad_priority`:triad 优先级数组
@@ -199,3 +199,10 @@ sce capability register --input <template.json> --json
199
199
  - 再按 triad 缺口优先级排序:`decision_strategy` -> `business_rules` -> `entity_relation`
200
200
  - 再按 `score_preview.value_score` 降序
201
201
  - 最后按 `scene_id` 升序
202
+
203
+ ## 11. 首页固定查询协议
204
+
205
+ - 使用 `capability-inventory` 返回的 `query` 作为首页请求回显
206
+ - 使用 `sort` 作为排序策略展示来源
207
+ - 首页筛选器应直接映射:`query.filters.release_ready`、`query.filters.missing_triad`
208
+ - 首页顶部可显示:`scene_total` / `scene_count`
@@ -914,9 +914,21 @@ async function runCapabilityInventoryCommand(options = {}, dependencies = {}) {
914
914
  }
915
915
 
916
916
  const filteredScenes = sortCapabilityInventoryEntries(filterCapabilityInventoryEntries(scenes, options));
917
+ const releaseReadyFilterRaw = normalizeText(options.releaseReady || options.release_ready).toLowerCase();
917
918
  const payload = {
918
919
  mode: 'capability-inventory',
919
920
  generated_at: new Date().toISOString(),
921
+ query: {
922
+ protocol_version: '1.0',
923
+ scene_id: normalizeText(options.scene || options.sceneId || options.scene_id) || null,
924
+ limit: limit,
925
+ sample_limit: toPositiveInteger(options.sample_limit, 5),
926
+ filters: {
927
+ release_ready: releaseReadyFilterRaw ? ['1', 'true', 'yes', 'ready'].includes(releaseReadyFilterRaw) : null,
928
+ missing_triad: normalizeText(options.missingTriad || options.missing_triad) || null
929
+ }
930
+ },
931
+ scene_total: scenes.length,
920
932
  scene_count: filteredScenes.length,
921
933
  sort: {
922
934
  strategy: 'publish_ready -> missing_triad_priority -> value_score_desc -> scene_id',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scene-capability-engine",
3
- "version": "3.6.23",
3
+ "version": "3.6.24",
4
4
  "description": "SCE (Scene Capability Engine) - A CLI tool and npm package for spec-driven development with AI coding assistants.",
5
5
  "main": "index.js",
6
6
  "bin": {