renma 0.17.0 → 0.18.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.
Files changed (156) hide show
  1. package/CHANGELOG.md +123 -1
  2. package/README.md +11 -1
  3. package/architecture.md +14 -4
  4. package/design.md +13 -2
  5. package/dist/agent-skills.d.ts +1 -1
  6. package/dist/agent-skills.d.ts.map +1 -1
  7. package/dist/agent-skills.js +28 -8
  8. package/dist/agent-skills.js.map +1 -1
  9. package/dist/catalog.d.ts +1 -1
  10. package/dist/catalog.d.ts.map +1 -1
  11. package/dist/catalog.js +120 -12
  12. package/dist/catalog.js.map +1 -1
  13. package/dist/cli-help.d.ts +9 -5
  14. package/dist/cli-help.d.ts.map +1 -1
  15. package/dist/cli-help.js +9 -0
  16. package/dist/cli-help.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +23 -0
  19. package/dist/cli.js.map +1 -1
  20. package/dist/commands/bom.d.ts +6 -3
  21. package/dist/commands/bom.d.ts.map +1 -1
  22. package/dist/commands/bom.js +27 -7
  23. package/dist/commands/bom.js.map +1 -1
  24. package/dist/commands/catalog.d.ts +1 -1
  25. package/dist/commands/catalog.d.ts.map +1 -1
  26. package/dist/commands/catalog.js +7 -1
  27. package/dist/commands/catalog.js.map +1 -1
  28. package/dist/commands/ci-report.d.ts.map +1 -1
  29. package/dist/commands/ci-report.js +18 -5
  30. package/dist/commands/ci-report.js.map +1 -1
  31. package/dist/commands/diff.js +8 -2
  32. package/dist/commands/diff.js.map +1 -1
  33. package/dist/commands/graph.d.ts +6 -2
  34. package/dist/commands/graph.d.ts.map +1 -1
  35. package/dist/commands/graph.js +23 -2
  36. package/dist/commands/graph.js.map +1 -1
  37. package/dist/commands/inspect.d.ts.map +1 -1
  38. package/dist/commands/inspect.js +2 -0
  39. package/dist/commands/inspect.js.map +1 -1
  40. package/dist/commands/ownership.d.ts +4 -3
  41. package/dist/commands/ownership.d.ts.map +1 -1
  42. package/dist/commands/ownership.js +27 -23
  43. package/dist/commands/ownership.js.map +1 -1
  44. package/dist/commands/readiness.d.ts +2 -1
  45. package/dist/commands/readiness.d.ts.map +1 -1
  46. package/dist/commands/readiness.js +98 -30
  47. package/dist/commands/readiness.js.map +1 -1
  48. package/dist/commands/scaffold.d.ts +3 -0
  49. package/dist/commands/scaffold.d.ts.map +1 -1
  50. package/dist/commands/scaffold.js +14 -0
  51. package/dist/commands/scaffold.js.map +1 -1
  52. package/dist/commands/suggest-metadata.d.ts.map +1 -1
  53. package/dist/commands/suggest-metadata.js +2 -0
  54. package/dist/commands/suggest-metadata.js.map +1 -1
  55. package/dist/commands/trust-graph.d.ts.map +1 -1
  56. package/dist/commands/trust-graph.js +12 -0
  57. package/dist/commands/trust-graph.js.map +1 -1
  58. package/dist/config.d.ts.map +1 -1
  59. package/dist/config.js +10 -3
  60. package/dist/config.js.map +1 -1
  61. package/dist/diagnostic-ids.d.ts +8 -0
  62. package/dist/diagnostic-ids.d.ts.map +1 -1
  63. package/dist/diagnostic-ids.js +8 -0
  64. package/dist/diagnostic-ids.js.map +1 -1
  65. package/dist/discovery.d.ts +5 -0
  66. package/dist/discovery.d.ts.map +1 -1
  67. package/dist/discovery.js +108 -65
  68. package/dist/discovery.js.map +1 -1
  69. package/dist/markdown.d.ts.map +1 -1
  70. package/dist/markdown.js +15 -0
  71. package/dist/markdown.js.map +1 -1
  72. package/dist/model.d.ts +17 -1
  73. package/dist/model.d.ts.map +1 -1
  74. package/dist/model.js +4 -1
  75. package/dist/model.js.map +1 -1
  76. package/dist/quality-profile.d.ts +91 -0
  77. package/dist/quality-profile.d.ts.map +1 -0
  78. package/dist/quality-profile.js +91 -0
  79. package/dist/quality-profile.js.map +1 -0
  80. package/dist/repeated-context.d.ts.map +1 -1
  81. package/dist/repeated-context.js +38 -83
  82. package/dist/repeated-context.js.map +1 -1
  83. package/dist/repository-boundary.d.ts +30 -0
  84. package/dist/repository-boundary.d.ts.map +1 -0
  85. package/dist/repository-boundary.js +116 -0
  86. package/dist/repository-boundary.js.map +1 -0
  87. package/dist/repository-evidence.d.ts +2 -0
  88. package/dist/repository-evidence.d.ts.map +1 -1
  89. package/dist/repository-evidence.js +6 -4
  90. package/dist/repository-evidence.js.map +1 -1
  91. package/dist/repository-paths.d.ts +6 -2
  92. package/dist/repository-paths.d.ts.map +1 -1
  93. package/dist/repository-paths.js +75 -24
  94. package/dist/repository-paths.js.map +1 -1
  95. package/dist/rules.d.ts +2 -0
  96. package/dist/rules.d.ts.map +1 -1
  97. package/dist/rules.js +263 -176
  98. package/dist/rules.js.map +1 -1
  99. package/dist/scanner.d.ts.map +1 -1
  100. package/dist/scanner.js +5 -1
  101. package/dist/scanner.js.map +1 -1
  102. package/dist/security-diagnostics.d.ts.map +1 -1
  103. package/dist/security-diagnostics.js +95 -30
  104. package/dist/security-diagnostics.js.map +1 -1
  105. package/dist/security-diff.d.ts +5 -2
  106. package/dist/security-diff.d.ts.map +1 -1
  107. package/dist/security-diff.js +20 -4
  108. package/dist/security-diff.js.map +1 -1
  109. package/dist/security-policy-inventory.d.ts +15 -3
  110. package/dist/security-policy-inventory.d.ts.map +1 -1
  111. package/dist/security-policy-inventory.js +123 -26
  112. package/dist/security-policy-inventory.js.map +1 -1
  113. package/dist/security-policy.d.ts +7 -0
  114. package/dist/security-policy.d.ts.map +1 -1
  115. package/dist/security-policy.js +70 -7
  116. package/dist/security-policy.js.map +1 -1
  117. package/dist/security-posture.d.ts.map +1 -1
  118. package/dist/security-posture.js +2 -1
  119. package/dist/security-posture.js.map +1 -1
  120. package/dist/skill-migration.js +2 -0
  121. package/dist/skill-migration.js.map +1 -1
  122. package/dist/static-support.d.ts +13 -0
  123. package/dist/static-support.d.ts.map +1 -0
  124. package/dist/static-support.js +284 -0
  125. package/dist/static-support.js.map +1 -0
  126. package/dist/token-estimator.d.ts +21 -0
  127. package/dist/token-estimator.d.ts.map +1 -0
  128. package/dist/token-estimator.js +84 -0
  129. package/dist/token-estimator.js.map +1 -0
  130. package/dist/trust-graph.d.ts +3 -3
  131. package/dist/trust-graph.d.ts.map +1 -1
  132. package/dist/trust-graph.js +69 -10
  133. package/dist/trust-graph.js.map +1 -1
  134. package/dist/types.d.ts +6 -1
  135. package/dist/types.d.ts.map +1 -1
  136. package/docs/README.md +13 -7
  137. package/docs/advanced-skill-authoring.md +16 -9
  138. package/docs/agent-skills-compatibility.md +10 -2
  139. package/docs/authoring-guide.md +62 -4
  140. package/docs/diagnostics.md +44 -11
  141. package/docs/quality-profile.md +123 -0
  142. package/docs/repository-context-bom.md +67 -8
  143. package/docs/schemas/repository-context-bom-v2.schema.json +648 -0
  144. package/docs/schemas/trust-graph-v2.schema.json +301 -0
  145. package/docs/security-policy.md +21 -5
  146. package/docs/trust-graph.md +47 -0
  147. package/docs/user-manual.md +34 -5
  148. package/examples/context-repo/README.md +6 -7
  149. package/examples/context-repo/contexts/domain/payment/idempotency.md +7 -0
  150. package/examples/context-repo/contexts/testing/boundary-value-analysis.md +7 -0
  151. package/examples/context-repo/contexts/testing/negative-testing.md +7 -0
  152. package/examples/context-repo/skills/testing/spec-review/SKILL.md +5 -0
  153. package/package.json +3 -1
  154. package/plan-discovery.md +24 -15
  155. package/plan.md +59 -119
  156. package/scripts/verify-package.mjs +8 -1
@@ -0,0 +1,648 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/KazuCocoa/renma/blob/main/docs/schemas/repository-context-bom-v2.schema.json",
4
+ "title": "Renma Repository Context BOM v2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "outputMode",
10
+ "generator",
11
+ "root",
12
+ "scope",
13
+ "summary",
14
+ "assets",
15
+ "dependencies",
16
+ "readiness",
17
+ "securityPosture",
18
+ "securityPolicyInventory",
19
+ "diagnostics"
20
+ ],
21
+ "properties": {
22
+ "schemaVersion": { "const": "renma.repository-context-bom.v2" },
23
+ "generatedAt": { "type": "string", "format": "date-time" },
24
+ "outputMode": { "enum": ["default", "omit_generated_at"] },
25
+ "generator": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["name", "version"],
29
+ "properties": {
30
+ "name": { "const": "renma" },
31
+ "version": { "type": "string" }
32
+ }
33
+ },
34
+ "root": { "type": "string" },
35
+ "configPath": { "type": "string" },
36
+ "scope": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": ["type", "runtimeUsage", "telemetryCollected"],
40
+ "properties": {
41
+ "type": { "const": "declared_repository_manifest" },
42
+ "runtimeUsage": { "const": false },
43
+ "telemetryCollected": { "const": false }
44
+ }
45
+ },
46
+ "summary": { "$ref": "#/$defs/summary" },
47
+ "assets": { "type": "array", "items": { "$ref": "#/$defs/asset" } },
48
+ "dependencies": {
49
+ "type": "array",
50
+ "items": { "$ref": "#/$defs/dependency" }
51
+ },
52
+ "readiness": { "$ref": "#/$defs/readiness" },
53
+ "securityPosture": { "$ref": "#/$defs/securityPosture" },
54
+ "securityPolicyInventory": { "$ref": "#/$defs/policyInventory" },
55
+ "diagnostics": {
56
+ "type": "array",
57
+ "items": { "$ref": "#/$defs/diagnostic" }
58
+ }
59
+ },
60
+ "allOf": [
61
+ {
62
+ "if": {
63
+ "properties": { "outputMode": { "const": "default" } },
64
+ "required": ["outputMode"]
65
+ },
66
+ "then": { "required": ["generatedAt"] }
67
+ },
68
+ {
69
+ "if": {
70
+ "properties": {
71
+ "outputMode": { "const": "omit_generated_at" }
72
+ },
73
+ "required": ["outputMode"]
74
+ },
75
+ "then": { "not": { "required": ["generatedAt"] } }
76
+ }
77
+ ],
78
+ "$defs": {
79
+ "counts3": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": ["error", "warning", "info"],
83
+ "properties": {
84
+ "error": { "type": "integer", "minimum": 0 },
85
+ "warning": { "type": "integer", "minimum": 0 },
86
+ "info": { "type": "integer", "minimum": 0 }
87
+ }
88
+ },
89
+ "summary": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "required": [
93
+ "scannedFileCount",
94
+ "assetCount",
95
+ "dependencyCount",
96
+ "resolvedDependencyCount",
97
+ "unresolvedDependencyCount",
98
+ "ownedAssetCount",
99
+ "unownedAssetCount",
100
+ "readinessScore",
101
+ "readinessLevel",
102
+ "diagnosticCounts"
103
+ ],
104
+ "properties": {
105
+ "scannedFileCount": { "type": "integer", "minimum": 0 },
106
+ "assetCount": { "type": "integer", "minimum": 0 },
107
+ "dependencyCount": { "type": "integer", "minimum": 0 },
108
+ "resolvedDependencyCount": { "type": "integer", "minimum": 0 },
109
+ "unresolvedDependencyCount": { "type": "integer", "minimum": 0 },
110
+ "ownedAssetCount": { "type": "integer", "minimum": 0 },
111
+ "unownedAssetCount": { "type": "integer", "minimum": 0 },
112
+ "readinessScore": { "type": "number", "minimum": 0, "maximum": 100 },
113
+ "readinessLevel": { "enum": ["not_ready", "needs_attention", "ready"] },
114
+ "diagnosticCounts": { "$ref": "#/$defs/counts3" }
115
+ }
116
+ },
117
+ "ownership": {
118
+ "type": "object",
119
+ "additionalProperties": false,
120
+ "required": ["declaredOwner", "effectiveOwner", "source"],
121
+ "properties": {
122
+ "declaredOwner": { "type": ["string", "null"] },
123
+ "effectiveOwner": { "type": ["string", "null"] },
124
+ "source": { "enum": ["declared", "inherited", "unowned"] },
125
+ "inheritedFrom": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": ["id", "sourcePath"],
129
+ "properties": {
130
+ "id": { "type": "string" },
131
+ "sourcePath": { "type": "string" }
132
+ }
133
+ }
134
+ }
135
+ },
136
+ "assetReference": {
137
+ "type": "object",
138
+ "additionalProperties": false,
139
+ "required": ["kind", "to", "resolved"],
140
+ "properties": {
141
+ "kind": { "type": "string" },
142
+ "to": { "type": "string" },
143
+ "resolved": { "type": "boolean" },
144
+ "targetId": { "type": "string" },
145
+ "targetKind": { "type": "string" },
146
+ "targetPath": { "type": "string" }
147
+ }
148
+ },
149
+ "asset": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "required": [
153
+ "id",
154
+ "kind",
155
+ "sourcePath",
156
+ "contentHash",
157
+ "sizeBytes",
158
+ "contentClassification",
159
+ "markdownParserEligible",
160
+ "ownership",
161
+ "tags",
162
+ "dependencies",
163
+ "dependents",
164
+ "diagnostics"
165
+ ],
166
+ "properties": {
167
+ "id": { "type": "string" },
168
+ "kind": {
169
+ "enum": [
170
+ "skill",
171
+ "context",
172
+ "context_lens",
173
+ "profile",
174
+ "reference",
175
+ "example",
176
+ "script",
177
+ "asset"
178
+ ]
179
+ },
180
+ "sourcePath": { "type": "string" },
181
+ "contentHash": { "type": "string" },
182
+ "sizeBytes": { "type": "integer", "minimum": 0 },
183
+ "contentClassification": { "enum": ["text", "binary"] },
184
+ "markdownParserEligible": { "type": "boolean" },
185
+ "ownership": { "$ref": "#/$defs/ownership" },
186
+ "status": {
187
+ "enum": ["experimental", "stable", "deprecated", "archived"]
188
+ },
189
+ "version": { "type": "string" },
190
+ "tags": { "type": "array", "items": { "type": "string" } },
191
+ "lifecycle": {
192
+ "type": "object",
193
+ "additionalProperties": false,
194
+ "properties": {
195
+ "status": {
196
+ "enum": ["experimental", "stable", "deprecated", "archived"]
197
+ },
198
+ "lastReviewedAt": { "type": "string" },
199
+ "reviewCycle": { "type": "string" },
200
+ "expiresAt": { "type": "string" }
201
+ }
202
+ },
203
+ "dependencies": {
204
+ "type": "array",
205
+ "items": { "$ref": "#/$defs/assetReference" }
206
+ },
207
+ "dependents": {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "object",
211
+ "additionalProperties": false,
212
+ "required": ["kind", "from", "sourcePath"],
213
+ "properties": {
214
+ "kind": { "type": "string" },
215
+ "from": { "type": "string" },
216
+ "sourcePath": { "type": "string" }
217
+ }
218
+ }
219
+ },
220
+ "diagnostics": {
221
+ "type": "array",
222
+ "items": { "$ref": "#/$defs/diagnostic" }
223
+ }
224
+ }
225
+ },
226
+ "dependency": {
227
+ "type": "object",
228
+ "additionalProperties": false,
229
+ "required": ["from", "to", "kind", "sourcePath", "resolved"],
230
+ "properties": {
231
+ "from": { "type": "string" },
232
+ "to": { "type": "string" },
233
+ "kind": { "type": "string" },
234
+ "sourcePath": { "type": "string" },
235
+ "resolved": { "type": "boolean" },
236
+ "targetId": { "type": "string" },
237
+ "targetKind": { "type": "string" },
238
+ "targetPath": { "type": "string" }
239
+ }
240
+ },
241
+ "diagnostic": {
242
+ "type": "object",
243
+ "required": ["severity", "message"],
244
+ "properties": {
245
+ "code": { "type": "string" },
246
+ "severity": { "enum": ["error", "warning", "info"] },
247
+ "path": { "type": "string" },
248
+ "line": { "type": "integer" },
249
+ "message": { "type": "string" },
250
+ "llmHint": { "type": "string" },
251
+ "details": { "type": "object" }
252
+ },
253
+ "additionalProperties": true
254
+ },
255
+ "readiness": {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "required": ["score", "level", "checks", "summary"],
259
+ "properties": {
260
+ "score": { "type": "number", "minimum": 0, "maximum": 100 },
261
+ "level": { "enum": ["not_ready", "needs_attention", "ready"] },
262
+ "checks": {
263
+ "type": "array",
264
+ "items": {
265
+ "type": "object",
266
+ "required": ["id", "title", "status", "severity", "summary"],
267
+ "properties": {
268
+ "id": { "type": "string" },
269
+ "title": { "type": "string" },
270
+ "status": { "enum": ["pass", "warn", "fail"] },
271
+ "severity": { "type": "string" },
272
+ "summary": { "type": "string" }
273
+ },
274
+ "additionalProperties": true
275
+ }
276
+ },
277
+ "summary": { "$ref": "#/$defs/readinessSummary" }
278
+ }
279
+ },
280
+ "nonNegativeInteger": { "type": "integer", "minimum": 0 },
281
+ "percentage": { "type": "number", "minimum": 0, "maximum": 100 },
282
+ "stringArray": { "type": "array", "items": { "type": "string" } },
283
+ "workflowReadinessSummary": {
284
+ "type": "object",
285
+ "additionalProperties": false,
286
+ "required": [
287
+ "skillEntrypoints",
288
+ "checks",
289
+ "pass",
290
+ "warn",
291
+ "fail",
292
+ "readinessPercent"
293
+ ],
294
+ "properties": {
295
+ "skillEntrypoints": { "$ref": "#/$defs/nonNegativeInteger" },
296
+ "checks": { "$ref": "#/$defs/nonNegativeInteger" },
297
+ "pass": { "$ref": "#/$defs/nonNegativeInteger" },
298
+ "warn": { "$ref": "#/$defs/nonNegativeInteger" },
299
+ "fail": { "$ref": "#/$defs/nonNegativeInteger" },
300
+ "readinessPercent": { "$ref": "#/$defs/percentage" }
301
+ }
302
+ },
303
+ "contextLensScopeCount": {
304
+ "type": "object",
305
+ "additionalProperties": false,
306
+ "required": ["scope", "count"],
307
+ "properties": {
308
+ "scope": { "type": "string" },
309
+ "count": { "$ref": "#/$defs/nonNegativeInteger" }
310
+ }
311
+ },
312
+ "contextLensItem": {
313
+ "type": "object",
314
+ "additionalProperties": false,
315
+ "required": [
316
+ "id",
317
+ "path",
318
+ "valid",
319
+ "scope",
320
+ "targets",
321
+ "targetPaths",
322
+ "diagnosticCounts",
323
+ "diagnosticCodes"
324
+ ],
325
+ "properties": {
326
+ "id": { "type": "string" },
327
+ "path": { "type": "string" },
328
+ "valid": { "type": "boolean" },
329
+ "scope": { "type": "string" },
330
+ "targets": { "$ref": "#/$defs/stringArray" },
331
+ "targetPaths": { "$ref": "#/$defs/stringArray" },
332
+ "diagnosticCounts": { "$ref": "#/$defs/counts3" },
333
+ "diagnosticCodes": { "$ref": "#/$defs/stringArray" }
334
+ }
335
+ },
336
+ "contextLensSummary": {
337
+ "type": "object",
338
+ "additionalProperties": false,
339
+ "required": [
340
+ "enabled",
341
+ "detected",
342
+ "totalLensCount",
343
+ "validLensCount",
344
+ "invalidLensCount",
345
+ "diagnosticCounts",
346
+ "definitionPaths",
347
+ "targetReferences",
348
+ "targetPaths",
349
+ "unresolvedTargetReferences",
350
+ "scopeSummary",
351
+ "lenses"
352
+ ],
353
+ "properties": {
354
+ "enabled": { "type": "boolean" },
355
+ "detected": { "type": "boolean" },
356
+ "totalLensCount": { "$ref": "#/$defs/nonNegativeInteger" },
357
+ "validLensCount": { "$ref": "#/$defs/nonNegativeInteger" },
358
+ "invalidLensCount": { "$ref": "#/$defs/nonNegativeInteger" },
359
+ "diagnosticCounts": { "$ref": "#/$defs/counts3" },
360
+ "representativeDiagnosticCode": { "type": "string" },
361
+ "definitionPaths": { "$ref": "#/$defs/stringArray" },
362
+ "targetReferences": { "$ref": "#/$defs/stringArray" },
363
+ "targetPaths": { "$ref": "#/$defs/stringArray" },
364
+ "unresolvedTargetReferences": { "$ref": "#/$defs/stringArray" },
365
+ "scopeSummary": {
366
+ "type": "array",
367
+ "items": { "$ref": "#/$defs/contextLensScopeCount" }
368
+ },
369
+ "lenses": {
370
+ "type": "array",
371
+ "items": { "$ref": "#/$defs/contextLensItem" }
372
+ }
373
+ }
374
+ },
375
+ "readinessSummary": {
376
+ "type": "object",
377
+ "additionalProperties": false,
378
+ "required": [
379
+ "totalAssets",
380
+ "ownedAssets",
381
+ "unownedAssets",
382
+ "ownershipCoveragePercent",
383
+ "nodeCount",
384
+ "edgeCount",
385
+ "resolvedEdges",
386
+ "unresolvedEdges",
387
+ "graphResolutionPercent",
388
+ "diagnosticCounts",
389
+ "workflow",
390
+ "contextLens",
391
+ "securityPosture",
392
+ "securityPolicyInventory"
393
+ ],
394
+ "properties": {
395
+ "totalAssets": { "$ref": "#/$defs/nonNegativeInteger" },
396
+ "ownedAssets": { "$ref": "#/$defs/nonNegativeInteger" },
397
+ "unownedAssets": { "$ref": "#/$defs/nonNegativeInteger" },
398
+ "ownershipCoveragePercent": { "$ref": "#/$defs/percentage" },
399
+ "nodeCount": { "$ref": "#/$defs/nonNegativeInteger" },
400
+ "edgeCount": { "$ref": "#/$defs/nonNegativeInteger" },
401
+ "resolvedEdges": { "$ref": "#/$defs/nonNegativeInteger" },
402
+ "unresolvedEdges": { "$ref": "#/$defs/nonNegativeInteger" },
403
+ "graphResolutionPercent": { "$ref": "#/$defs/percentage" },
404
+ "diagnosticCounts": { "$ref": "#/$defs/counts3" },
405
+ "workflow": { "$ref": "#/$defs/workflowReadinessSummary" },
406
+ "contextLens": { "$ref": "#/$defs/contextLensSummary" },
407
+ "securityPosture": { "$ref": "#/$defs/securityPosture" },
408
+ "securityPolicyInventory": { "$ref": "#/$defs/policyInventory" }
409
+ }
410
+ },
411
+ "topFinding": {
412
+ "type": "object",
413
+ "additionalProperties": false,
414
+ "required": ["id", "count", "maxSeverity"],
415
+ "properties": {
416
+ "id": { "type": "string" },
417
+ "count": { "$ref": "#/$defs/nonNegativeInteger" },
418
+ "maxSeverity": { "enum": ["critical", "high", "medium", "low"] },
419
+ "riskClass": { "enum": ["violation", "suspicious", "advisory"] }
420
+ }
421
+ },
422
+ "securityPosture": {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "required": [
426
+ "totalSecurityFindings",
427
+ "riskClasses",
428
+ "severities",
429
+ "highOrCritical",
430
+ "topFindingIds"
431
+ ],
432
+ "properties": {
433
+ "totalSecurityFindings": { "type": "integer", "minimum": 0 },
434
+ "riskClasses": {
435
+ "type": "object",
436
+ "required": ["violation", "suspicious", "advisory", "unclassified"],
437
+ "additionalProperties": false,
438
+ "properties": {
439
+ "violation": { "type": "integer", "minimum": 0 },
440
+ "suspicious": { "type": "integer", "minimum": 0 },
441
+ "advisory": { "type": "integer", "minimum": 0 },
442
+ "unclassified": { "type": "integer", "minimum": 0 }
443
+ }
444
+ },
445
+ "severities": {
446
+ "type": "object",
447
+ "required": ["critical", "high", "medium", "low"],
448
+ "additionalProperties": false,
449
+ "properties": {
450
+ "critical": { "type": "integer", "minimum": 0 },
451
+ "high": { "type": "integer", "minimum": 0 },
452
+ "medium": { "type": "integer", "minimum": 0 },
453
+ "low": { "type": "integer", "minimum": 0 }
454
+ }
455
+ },
456
+ "highOrCritical": { "type": "integer", "minimum": 0 },
457
+ "topFindingIds": {
458
+ "type": "array",
459
+ "items": { "$ref": "#/$defs/topFinding" }
460
+ }
461
+ }
462
+ },
463
+ "assetKindCounts": {
464
+ "type": "object",
465
+ "additionalProperties": false,
466
+ "required": [
467
+ "skill",
468
+ "context",
469
+ "context_lens",
470
+ "agent",
471
+ "profile",
472
+ "reference",
473
+ "example",
474
+ "script",
475
+ "asset",
476
+ "config",
477
+ "unknown"
478
+ ],
479
+ "properties": {
480
+ "skill": { "$ref": "#/$defs/nonNegativeInteger" },
481
+ "context": { "$ref": "#/$defs/nonNegativeInteger" },
482
+ "context_lens": { "$ref": "#/$defs/nonNegativeInteger" },
483
+ "agent": { "$ref": "#/$defs/nonNegativeInteger" },
484
+ "profile": { "$ref": "#/$defs/nonNegativeInteger" },
485
+ "reference": { "$ref": "#/$defs/nonNegativeInteger" },
486
+ "example": { "$ref": "#/$defs/nonNegativeInteger" },
487
+ "script": { "$ref": "#/$defs/nonNegativeInteger" },
488
+ "asset": { "$ref": "#/$defs/nonNegativeInteger" },
489
+ "config": { "$ref": "#/$defs/nonNegativeInteger" },
490
+ "unknown": { "$ref": "#/$defs/nonNegativeInteger" }
491
+ }
492
+ },
493
+ "policyInventory": {
494
+ "type": "object",
495
+ "required": [
496
+ "totalPolicyAssets",
497
+ "assetsWithLocalPolicyMetadata",
498
+ "assetsWithInheritedPolicy",
499
+ "assetsWithEffectivePolicy",
500
+ "assetsWithoutEffectivePolicy",
501
+ "policySources",
502
+ "assetKinds",
503
+ "networkAllowed",
504
+ "externalUploadAllowed",
505
+ "secretsAllowed",
506
+ "humanApprovalRequired",
507
+ "approvedNetworkDestinationCount",
508
+ "approvedUploadDestinationCount",
509
+ "forbiddenInputCount",
510
+ "disallowedCommandCount",
511
+ "securityProfiles",
512
+ "topApprovedNetworkDestinations",
513
+ "topApprovedUploadDestinations",
514
+ "topForbiddenInputs",
515
+ "assetsWithoutEffectivePolicyList"
516
+ ],
517
+ "properties": {
518
+ "totalPolicyAssets": { "type": "integer", "minimum": 0 },
519
+ "assetsWithLocalPolicyMetadata": {
520
+ "type": "integer",
521
+ "minimum": 0
522
+ },
523
+ "assetsWithInheritedPolicy": { "type": "integer", "minimum": 0 },
524
+ "assetsWithEffectivePolicy": { "type": "integer", "minimum": 0 },
525
+ "assetsWithoutEffectivePolicy": {
526
+ "type": "integer",
527
+ "minimum": 0
528
+ },
529
+ "policySources": {
530
+ "type": "object",
531
+ "additionalProperties": false,
532
+ "required": [
533
+ "local",
534
+ "security_profile",
535
+ "repository_config",
536
+ "owning_skill"
537
+ ],
538
+ "properties": {
539
+ "local": { "type": "integer", "minimum": 0 },
540
+ "security_profile": { "type": "integer", "minimum": 0 },
541
+ "repository_config": { "type": "integer", "minimum": 0 },
542
+ "owning_skill": { "type": "integer", "minimum": 0 }
543
+ }
544
+ },
545
+ "assetKinds": { "$ref": "#/$defs/assetKindCounts" },
546
+ "networkAllowed": { "$ref": "#/$defs/booleanCounts" },
547
+ "externalUploadAllowed": { "$ref": "#/$defs/booleanCounts" },
548
+ "secretsAllowed": { "$ref": "#/$defs/booleanCounts" },
549
+ "humanApprovalRequired": { "$ref": "#/$defs/booleanCounts" },
550
+ "approvedNetworkDestinationCount": {
551
+ "type": "integer",
552
+ "minimum": 0
553
+ },
554
+ "approvedUploadDestinationCount": {
555
+ "type": "integer",
556
+ "minimum": 0
557
+ },
558
+ "forbiddenInputCount": { "type": "integer", "minimum": 0 },
559
+ "disallowedCommandCount": { "type": "integer", "minimum": 0 },
560
+ "securityProfiles": {
561
+ "type": "object",
562
+ "required": [
563
+ "referenced",
564
+ "resolved",
565
+ "missing",
566
+ "cyclic",
567
+ "none",
568
+ "names"
569
+ ],
570
+ "additionalProperties": false,
571
+ "properties": {
572
+ "referenced": { "type": "integer", "minimum": 0 },
573
+ "resolved": { "type": "integer", "minimum": 0 },
574
+ "missing": { "type": "integer", "minimum": 0 },
575
+ "cyclic": { "type": "integer", "minimum": 0 },
576
+ "none": { "type": "integer", "minimum": 0 },
577
+ "names": {
578
+ "type": "array",
579
+ "items": { "$ref": "#/$defs/nameCount" }
580
+ }
581
+ }
582
+ },
583
+ "topApprovedNetworkDestinations": {
584
+ "type": "array",
585
+ "items": { "$ref": "#/$defs/destinationCount" }
586
+ },
587
+ "topApprovedUploadDestinations": {
588
+ "type": "array",
589
+ "items": { "$ref": "#/$defs/destinationCount" }
590
+ },
591
+ "topForbiddenInputs": {
592
+ "type": "array",
593
+ "items": { "$ref": "#/$defs/inputCount" }
594
+ },
595
+ "assetsWithoutEffectivePolicyList": {
596
+ "type": "array",
597
+ "items": {
598
+ "type": "object",
599
+ "required": ["path", "kind"],
600
+ "additionalProperties": false,
601
+ "properties": {
602
+ "path": { "type": "string" },
603
+ "kind": { "type": "string" }
604
+ }
605
+ }
606
+ }
607
+ },
608
+ "additionalProperties": false
609
+ },
610
+ "booleanCounts": {
611
+ "type": "object",
612
+ "required": ["true", "false", "unspecified"],
613
+ "additionalProperties": false,
614
+ "properties": {
615
+ "true": { "type": "integer", "minimum": 0 },
616
+ "false": { "type": "integer", "minimum": 0 },
617
+ "unspecified": { "type": "integer", "minimum": 0 }
618
+ }
619
+ },
620
+ "nameCount": {
621
+ "type": "object",
622
+ "required": ["name", "count"],
623
+ "additionalProperties": false,
624
+ "properties": {
625
+ "name": { "type": "string" },
626
+ "count": { "type": "integer", "minimum": 0 }
627
+ }
628
+ },
629
+ "destinationCount": {
630
+ "type": "object",
631
+ "required": ["destination", "count"],
632
+ "additionalProperties": false,
633
+ "properties": {
634
+ "destination": { "type": "string" },
635
+ "count": { "type": "integer", "minimum": 0 }
636
+ }
637
+ },
638
+ "inputCount": {
639
+ "type": "object",
640
+ "required": ["input", "count"],
641
+ "additionalProperties": false,
642
+ "properties": {
643
+ "input": { "type": "string" },
644
+ "count": { "type": "integer", "minimum": 0 }
645
+ }
646
+ }
647
+ }
648
+ }