pluribus-context 0.3.21 → 0.3.26

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 (93) hide show
  1. package/CHANGELOG.md +31 -3
  2. package/README.md +2 -2
  3. package/docs/community-review-packet.md +4 -2
  4. package/docs/context-budget-receipts.md +150 -0
  5. package/docs/context-input-evidence.md +397 -0
  6. package/docs/context-receipts-for-agent-observability.md +177 -0
  7. package/docs/orchestration-search-receipts.md +102 -0
  8. package/docs/portability-fidelity-report.md +10 -6
  9. package/examples/context-input-evidence/AGENTS.md +12 -0
  10. package/examples/context-input-evidence/agent-overlay-log.jsonl +4 -0
  11. package/examples/context-input-evidence/agent-overlay-otel-trace.json +548 -0
  12. package/examples/context-input-evidence/agent-overlay-receipt.ndjson +3 -0
  13. package/examples/context-input-evidence/agentgateway-progressive-disclosure-otel-trace.json +393 -0
  14. package/examples/context-input-evidence/agentgateway-progressive-disclosure-receipt.ndjson +4 -0
  15. package/examples/context-input-evidence/brain-remediation-otel-trace.json +645 -0
  16. package/examples/context-input-evidence/brain-remediation-receipt.ndjson +7 -0
  17. package/examples/context-input-evidence/claudekit-mcp-manager-otel-trace.json +417 -0
  18. package/examples/context-input-evidence/claudekit-mcp-manager-receipt.ndjson +5 -0
  19. package/examples/context-input-evidence/cli-progressive-disclosure-otel-trace.json +399 -0
  20. package/examples/context-input-evidence/cli-progressive-disclosure-receipt.ndjson +4 -0
  21. package/examples/context-input-evidence/compaction-otel-trace.json +711 -0
  22. package/examples/context-input-evidence/compaction-receipt.ndjson +6 -0
  23. package/examples/context-input-evidence/context-selection-otel-trace.json +627 -0
  24. package/examples/context-input-evidence/context-selection-receipt.ndjson +7 -0
  25. package/examples/context-input-evidence/convert-agent-overlay-log.mjs +156 -0
  26. package/examples/context-input-evidence/convert-agentgateway-progressive-disclosure-log.mjs +251 -0
  27. package/examples/context-input-evidence/convert-brain-remediation-log.mjs +241 -0
  28. package/examples/context-input-evidence/convert-claudekit-mcp-manager-log.mjs +253 -0
  29. package/examples/context-input-evidence/convert-cli-progressive-disclosure-log.mjs +251 -0
  30. package/examples/context-input-evidence/convert-compaction-log.mjs +224 -0
  31. package/examples/context-input-evidence/convert-context-selection-log.mjs +247 -0
  32. package/examples/context-input-evidence/convert-mcp-tool-search-log.mjs +242 -0
  33. package/examples/context-input-evidence/convert-memory-consolidation-log.mjs +240 -0
  34. package/examples/context-input-evidence/convert-memory-governance-delete-log.mjs +223 -0
  35. package/examples/context-input-evidence/convert-memory-log.mjs +226 -0
  36. package/examples/context-input-evidence/convert-memory-provenance-log.mjs +263 -0
  37. package/examples/context-input-evidence/convert-secret-scanning-log.mjs +233 -0
  38. package/examples/context-input-evidence/convert-session-log.mjs +186 -0
  39. package/examples/context-input-evidence/convert-skill-log.mjs +161 -0
  40. package/examples/context-input-evidence/convert-skill-registry-log.mjs +246 -0
  41. package/examples/context-input-evidence/convert-skill-routing-log.mjs +253 -0
  42. package/examples/context-input-evidence/convert-subagent-context-budget-log.mjs +267 -0
  43. package/examples/context-input-evidence/convert-subagent-delegation-log.mjs +264 -0
  44. package/examples/context-input-evidence/export-otel-trace.mjs +128 -0
  45. package/examples/context-input-evidence/generate-receipt.mjs +188 -0
  46. package/examples/context-input-evidence/mcp-tool-search-otel-trace.json +477 -0
  47. package/examples/context-input-evidence/mcp-tool-search-receipt.ndjson +5 -0
  48. package/examples/context-input-evidence/memory-consolidation-otel-trace.json +492 -0
  49. package/examples/context-input-evidence/memory-consolidation-receipt.ndjson +4 -0
  50. package/examples/context-input-evidence/memory-governance-delete-otel-trace.json +614 -0
  51. package/examples/context-input-evidence/memory-governance-delete-receipt.ndjson +5 -0
  52. package/examples/context-input-evidence/memory-otel-trace.json +645 -0
  53. package/examples/context-input-evidence/memory-provenance-otel-trace.json +711 -0
  54. package/examples/context-input-evidence/memory-provenance-receipt.ndjson +5 -0
  55. package/examples/context-input-evidence/memory-receipt.ndjson +4 -0
  56. package/examples/context-input-evidence/otel-trace.json +1119 -0
  57. package/examples/context-input-evidence/receipt.ndjson +6 -0
  58. package/examples/context-input-evidence/sample-agentgateway-progressive-disclosure-log.jsonl +5 -0
  59. package/examples/context-input-evidence/sample-brain-remediation-log.jsonl +9 -0
  60. package/examples/context-input-evidence/sample-claudekit-mcp-manager-log.jsonl +6 -0
  61. package/examples/context-input-evidence/sample-cli-progressive-disclosure-log.jsonl +5 -0
  62. package/examples/context-input-evidence/sample-compaction-log.jsonl +7 -0
  63. package/examples/context-input-evidence/sample-context-selection-log.jsonl +7 -0
  64. package/examples/context-input-evidence/sample-mcp-tool-search-log.jsonl +6 -0
  65. package/examples/context-input-evidence/sample-memory-consolidation-log.jsonl +5 -0
  66. package/examples/context-input-evidence/sample-memory-governance-delete-log.jsonl +6 -0
  67. package/examples/context-input-evidence/sample-memory-provenance-log.jsonl +6 -0
  68. package/examples/context-input-evidence/sample-memory-retrieval-log.jsonl +6 -0
  69. package/examples/context-input-evidence/sample-secret-scanning-log.jsonl +7 -0
  70. package/examples/context-input-evidence/sample-session-log.jsonl +6 -0
  71. package/examples/context-input-evidence/sample-skill-registry-log.jsonl +5 -0
  72. package/examples/context-input-evidence/sample-skill-routing-log.jsonl +7 -0
  73. package/examples/context-input-evidence/sample-subagent-context-budget-log.jsonl +6 -0
  74. package/examples/context-input-evidence/sample-subagent-delegation-log.jsonl +5 -0
  75. package/examples/context-input-evidence/secret-scanning-otel-trace.json +794 -0
  76. package/examples/context-input-evidence/secret-scanning-receipt.ndjson +6 -0
  77. package/examples/context-input-evidence/session-otel-trace.json +411 -0
  78. package/examples/context-input-evidence/session-receipt.ndjson +2 -0
  79. package/examples/context-input-evidence/skill-invocation-log.jsonl +4 -0
  80. package/examples/context-input-evidence/skill-otel-trace.json +548 -0
  81. package/examples/context-input-evidence/skill-receipt.ndjson +3 -0
  82. package/examples/context-input-evidence/skill-registry-otel-trace.json +471 -0
  83. package/examples/context-input-evidence/skill-registry-receipt.ndjson +5 -0
  84. package/examples/context-input-evidence/skill-routing-otel-trace.json +567 -0
  85. package/examples/context-input-evidence/skill-routing-receipt.ndjson +6 -0
  86. package/examples/context-input-evidence/subagent-context-budget-otel-trace.json +507 -0
  87. package/examples/context-input-evidence/subagent-context-budget-receipt.ndjson +5 -0
  88. package/examples/context-input-evidence/subagent-delegation-otel-trace.json +388 -0
  89. package/examples/context-input-evidence/subagent-delegation-receipt.ndjson +4 -0
  90. package/package.json +6 -2
  91. package/schemas/audit-result.schema.json +468 -43
  92. package/src/commands/audit.js +105 -5
  93. package/src/utils/version.js +1 -1
@@ -4,7 +4,13 @@
4
4
  "title": "Pluribus audit JSON result",
5
5
  "description": "Machine-readable output produced by `pluribus audit --json`.",
6
6
  "type": "object",
7
- "required": ["ok", "source", "sourceFound", "summary", "nextStep"],
7
+ "required": [
8
+ "ok",
9
+ "source",
10
+ "sourceFound",
11
+ "summary",
12
+ "nextStep"
13
+ ],
8
14
  "properties": {
9
15
  "ok": {
10
16
  "type": "boolean",
@@ -20,40 +26,68 @@
20
26
  },
21
27
  "tools": {
22
28
  "type": "array",
23
- "items": { "type": "string" },
29
+ "items": {
30
+ "type": "string"
31
+ },
24
32
  "description": "Tool ids audited when a source file exists."
25
33
  },
26
34
  "results": {
27
35
  "type": "array",
28
- "items": { "$ref": "#/$defs/result" },
36
+ "items": {
37
+ "$ref": "#/$defs/result"
38
+ },
29
39
  "description": "Per-tool/per-file audit results when a source file exists."
30
40
  },
31
41
  "existingContextFiles": {
32
42
  "type": "array",
33
- "items": { "type": "string" },
43
+ "items": {
44
+ "type": "string"
45
+ },
34
46
  "description": "Known AI context files discovered when no source file exists."
35
47
  },
36
48
  "errors": {
37
49
  "type": "array",
38
- "items": { "type": "string" },
50
+ "items": {
51
+ "type": "string"
52
+ },
39
53
  "description": "Validation/import/tool errors that prevented a full audit."
40
54
  },
41
55
  "requiredSections": {
42
56
  "type": "array",
43
- "items": { "type": "string" },
57
+ "items": {
58
+ "type": "string"
59
+ },
44
60
  "description": "Required pluribus.md sections when validation fails."
45
61
  },
46
62
  "summary": {
47
63
  "type": "object",
48
64
  "description": "Counts for the audit or discovery result.",
49
65
  "properties": {
50
- "current": { "type": "integer", "minimum": 0 },
51
- "drifted": { "type": "integer", "minimum": 0 },
52
- "missing": { "type": "integer", "minimum": 0 },
53
- "errors": { "type": "integer", "minimum": 0 },
54
- "existingContextFiles": { "type": "integer", "minimum": 0 }
66
+ "current": {
67
+ "type": "integer",
68
+ "minimum": 0
69
+ },
70
+ "drifted": {
71
+ "type": "integer",
72
+ "minimum": 0
73
+ },
74
+ "missing": {
75
+ "type": "integer",
76
+ "minimum": 0
77
+ },
78
+ "errors": {
79
+ "type": "integer",
80
+ "minimum": 0
81
+ },
82
+ "existingContextFiles": {
83
+ "type": "integer",
84
+ "minimum": 0
85
+ }
55
86
  },
56
- "additionalProperties": { "type": "integer", "minimum": 0 }
87
+ "additionalProperties": {
88
+ "type": "integer",
89
+ "minimum": 0
90
+ }
57
91
  },
58
92
  "nextStep": {
59
93
  "type": "string",
@@ -77,20 +111,38 @@
77
111
  "allOf": [
78
112
  {
79
113
  "if": {
80
- "properties": { "sourceFound": { "const": true } },
81
- "required": ["sourceFound"]
114
+ "properties": {
115
+ "sourceFound": {
116
+ "const": true
117
+ }
118
+ },
119
+ "required": [
120
+ "sourceFound"
121
+ ]
82
122
  },
83
123
  "then": {
84
- "required": ["tools", "results"]
124
+ "required": [
125
+ "tools",
126
+ "results"
127
+ ]
85
128
  }
86
129
  },
87
130
  {
88
131
  "if": {
89
- "properties": { "sourceFound": { "const": false } },
90
- "required": ["sourceFound"]
132
+ "properties": {
133
+ "sourceFound": {
134
+ "const": false
135
+ }
136
+ },
137
+ "required": [
138
+ "sourceFound"
139
+ ]
91
140
  },
92
141
  "then": {
93
- "required": ["existingContextFiles", "docs"]
142
+ "required": [
143
+ "existingContextFiles",
144
+ "docs"
145
+ ]
94
146
  }
95
147
  }
96
148
  ],
@@ -98,81 +150,301 @@
98
150
  "$defs": {
99
151
  "fidelityReport": {
100
152
  "type": "object",
101
- "required": ["claim", "sourceSections", "targets", "summary", "warnings", "nextStep"],
153
+ "required": [
154
+ "claim",
155
+ "sourceSections",
156
+ "targets",
157
+ "summary",
158
+ "warnings",
159
+ "nextStep"
160
+ ],
102
161
  "properties": {
103
- "claim": { "type": "string" },
162
+ "claim": {
163
+ "type": "string"
164
+ },
104
165
  "sourceSections": {
105
166
  "type": "array",
106
- "items": { "type": "string" }
167
+ "items": {
168
+ "type": "string"
169
+ }
107
170
  },
108
171
  "targets": {
109
172
  "type": "array",
110
- "items": { "$ref": "#/$defs/fidelityTarget" }
173
+ "items": {
174
+ "$ref": "#/$defs/fidelityTarget"
175
+ }
111
176
  },
112
177
  "summary": {
113
178
  "type": "object",
114
- "required": ["targetCount", "targetsWithUnsupportedSections", "warningCount"],
179
+ "required": [
180
+ "targetCount",
181
+ "targetsWithUnsupportedSections",
182
+ "warningCount"
183
+ ],
115
184
  "properties": {
116
- "targetCount": { "type": "integer", "minimum": 0 },
117
- "targetsWithUnsupportedSections": { "type": "integer", "minimum": 0 },
118
- "warningCount": { "type": "integer", "minimum": 0 }
185
+ "targetCount": {
186
+ "type": "integer",
187
+ "minimum": 0
188
+ },
189
+ "targetsWithUnsupportedSections": {
190
+ "type": "integer",
191
+ "minimum": 0
192
+ },
193
+ "warningCount": {
194
+ "type": "integer",
195
+ "minimum": 0
196
+ }
119
197
  },
120
198
  "additionalProperties": false
121
199
  },
122
200
  "warnings": {
123
201
  "type": "array",
124
- "items": { "$ref": "#/$defs/fidelityWarning" }
202
+ "items": {
203
+ "$ref": "#/$defs/fidelityWarning"
204
+ }
125
205
  },
126
- "nextStep": { "type": "string" }
206
+ "nextStep": {
207
+ "type": "string"
208
+ }
127
209
  },
128
210
  "additionalProperties": false
129
211
  },
130
212
  "fidelityTarget": {
131
213
  "type": "object",
132
- "required": ["toolId", "files", "activation", "representedSections", "unsupportedSections"],
214
+ "required": [
215
+ "toolId",
216
+ "files",
217
+ "nativeDiscoverySurface",
218
+ "resolutionAnchor",
219
+ "genericFallback",
220
+ "manualActivationRequired",
221
+ "activation",
222
+ "loadEvidence",
223
+ "duplicateLoadEvidence",
224
+ "effectiveContext",
225
+ "semanticDifference",
226
+ "representedSections",
227
+ "unsupportedSections"
228
+ ],
133
229
  "properties": {
134
- "toolId": { "type": "string" },
230
+ "toolId": {
231
+ "type": "string"
232
+ },
135
233
  "files": {
136
234
  "type": "array",
137
- "items": { "type": "string" }
235
+ "items": {
236
+ "type": "string"
237
+ }
238
+ },
239
+ "nativeDiscoverySurface": {
240
+ "type": [
241
+ "string",
242
+ "null"
243
+ ]
244
+ },
245
+ "resolutionAnchor": {
246
+ "type": "string"
247
+ },
248
+ "genericFallback": {
249
+ "type": "boolean"
250
+ },
251
+ "manualActivationRequired": {
252
+ "type": "boolean"
253
+ },
254
+ "activation": {
255
+ "$ref": "#/$defs/fidelityActivation"
256
+ },
257
+ "loadEvidence": {
258
+ "$ref": "#/$defs/loadEvidence"
259
+ },
260
+ "effectiveContext": {
261
+ "$ref": "#/$defs/effectiveContext"
262
+ },
263
+ "semanticDifference": {
264
+ "type": "array",
265
+ "items": {
266
+ "type": "string"
267
+ }
138
268
  },
139
- "activation": { "$ref": "#/$defs/fidelityActivation" },
140
269
  "representedSections": {
141
270
  "type": "array",
142
- "items": { "type": "string" }
271
+ "items": {
272
+ "type": "string"
273
+ }
143
274
  },
144
275
  "unsupportedSections": {
145
276
  "type": "array",
146
- "items": { "type": "string" }
277
+ "items": {
278
+ "type": "string"
279
+ }
280
+ },
281
+ "duplicateLoadEvidence": {
282
+ "$ref": "#/$defs/duplicateLoadEvidence"
283
+ }
284
+ },
285
+ "additionalProperties": false
286
+ },
287
+ "loadEvidence": {
288
+ "type": "object",
289
+ "required": [
290
+ "loadedBy",
291
+ "effectiveSource",
292
+ "deliveryPath",
293
+ "deliveryMechanism",
294
+ "hookInstalled",
295
+ "injectedOnSessionStart",
296
+ "manualInjectionRequired",
297
+ "resumeBehavior",
298
+ "dedupeKey",
299
+ "dedupeRisk",
300
+ "evidence",
301
+ "note"
302
+ ],
303
+ "properties": {
304
+ "loadedBy": {
305
+ "type": "string"
306
+ },
307
+ "effectiveSource": {
308
+ "type": [
309
+ "string",
310
+ "null"
311
+ ]
312
+ },
313
+ "deliveryPath": {
314
+ "type": [
315
+ "string",
316
+ "null"
317
+ ]
318
+ },
319
+ "deliveryMechanism": {
320
+ "type": "string"
321
+ },
322
+ "hookInstalled": {
323
+ "type": "boolean"
324
+ },
325
+ "injectedOnSessionStart": {
326
+ "type": "boolean"
327
+ },
328
+ "manualInjectionRequired": {
329
+ "type": "boolean"
330
+ },
331
+ "resumeBehavior": {
332
+ "type": "string"
333
+ },
334
+ "dedupeKey": {
335
+ "type": "string"
336
+ },
337
+ "dedupeRisk": {
338
+ "type": "string"
339
+ },
340
+ "evidence": {
341
+ "type": "array",
342
+ "items": {
343
+ "type": "string"
344
+ }
345
+ },
346
+ "note": {
347
+ "type": "string"
348
+ }
349
+ },
350
+ "additionalProperties": false
351
+ },
352
+ "effectiveContext": {
353
+ "type": "object",
354
+ "required": [
355
+ "scope",
356
+ "pathScoped",
357
+ "inheritance",
358
+ "overrideBehavior",
359
+ "isolationEvidence",
360
+ "entrypoints",
361
+ "loadedBy",
362
+ "effectiveSource",
363
+ "note"
364
+ ],
365
+ "properties": {
366
+ "scope": {
367
+ "type": "string"
368
+ },
369
+ "pathScoped": {
370
+ "type": "boolean"
371
+ },
372
+ "inheritance": {
373
+ "type": "string"
374
+ },
375
+ "overrideBehavior": {
376
+ "type": "string"
377
+ },
378
+ "isolationEvidence": {
379
+ "type": "string"
380
+ },
381
+ "entrypoints": {
382
+ "type": "array",
383
+ "items": {
384
+ "type": "string"
385
+ }
386
+ },
387
+ "loadedBy": {
388
+ "type": "string"
389
+ },
390
+ "effectiveSource": {
391
+ "type": [
392
+ "string",
393
+ "null"
394
+ ]
395
+ },
396
+ "note": {
397
+ "type": "string"
147
398
  }
148
399
  },
149
400
  "additionalProperties": false
150
401
  },
151
402
  "fidelityActivation": {
152
403
  "type": "object",
153
- "required": ["kind", "evidence"],
404
+ "required": [
405
+ "kind",
406
+ "evidence"
407
+ ],
154
408
  "properties": {
155
- "kind": { "type": "string" },
409
+ "kind": {
410
+ "type": "string"
411
+ },
156
412
  "evidence": {
157
413
  "type": "array",
158
- "items": { "type": "string" }
414
+ "items": {
415
+ "type": "string"
416
+ }
159
417
  }
160
418
  },
161
419
  "additionalProperties": false
162
420
  },
163
421
  "fidelityWarning": {
164
422
  "type": "object",
165
- "required": ["code", "target", "message"],
423
+ "required": [
424
+ "code",
425
+ "target",
426
+ "message"
427
+ ],
166
428
  "properties": {
167
- "code": { "type": "string" },
168
- "target": { "type": "string" },
169
- "message": { "type": "string" }
429
+ "code": {
430
+ "type": "string"
431
+ },
432
+ "target": {
433
+ "type": "string"
434
+ },
435
+ "message": {
436
+ "type": "string"
437
+ }
170
438
  },
171
439
  "additionalProperties": false
172
440
  },
173
441
  "result": {
174
442
  "type": "object",
175
- "required": ["toolId", "status", "file"],
443
+ "required": [
444
+ "toolId",
445
+ "status",
446
+ "file"
447
+ ],
176
448
  "properties": {
177
449
  "toolId": {
178
450
  "type": "string",
@@ -180,7 +452,12 @@
180
452
  },
181
453
  "status": {
182
454
  "type": "string",
183
- "enum": ["current", "missing", "drift", "error"]
455
+ "enum": [
456
+ "current",
457
+ "missing",
458
+ "drift",
459
+ "error"
460
+ ]
184
461
  },
185
462
  "file": {
186
463
  "type": "string",
@@ -192,6 +469,154 @@
192
469
  }
193
470
  },
194
471
  "additionalProperties": false
472
+ },
473
+ "duplicateLoadEvidence": {
474
+ "type": "object",
475
+ "required": [
476
+ "contentIdentity",
477
+ "candidateLoads",
478
+ "selectedLoad",
479
+ "suppressedLoads",
480
+ "selectionPolicy",
481
+ "crossRootScanMode",
482
+ "duplicateRisk",
483
+ "invariant",
484
+ "note"
485
+ ],
486
+ "properties": {
487
+ "contentIdentity": {
488
+ "type": [
489
+ "string",
490
+ "null"
491
+ ]
492
+ },
493
+ "candidateLoads": {
494
+ "type": "array",
495
+ "items": {
496
+ "$ref": "#/$defs/duplicateLoadCandidate"
497
+ }
498
+ },
499
+ "selectedLoad": {
500
+ "anyOf": [
501
+ {
502
+ "$ref": "#/$defs/selectedDuplicateLoad"
503
+ },
504
+ {
505
+ "type": "null"
506
+ }
507
+ ]
508
+ },
509
+ "suppressedLoads": {
510
+ "type": "array",
511
+ "items": {
512
+ "$ref": "#/$defs/duplicateLoadCandidate"
513
+ }
514
+ },
515
+ "selectionPolicy": {
516
+ "type": "string"
517
+ },
518
+ "crossRootScanMode": {
519
+ "type": "string"
520
+ },
521
+ "duplicateRisk": {
522
+ "type": "string"
523
+ },
524
+ "invariant": {
525
+ "type": "string"
526
+ },
527
+ "note": {
528
+ "type": "string"
529
+ }
530
+ },
531
+ "additionalProperties": false
532
+ },
533
+ "duplicateLoadCandidate": {
534
+ "type": "object",
535
+ "required": [
536
+ "path",
537
+ "contentHash",
538
+ "toolOwner",
539
+ "loadedBy",
540
+ "discoveryRoot",
541
+ "priority",
542
+ "source"
543
+ ],
544
+ "properties": {
545
+ "path": {
546
+ "type": "string"
547
+ },
548
+ "contentHash": {
549
+ "type": [
550
+ "string",
551
+ "null"
552
+ ]
553
+ },
554
+ "toolOwner": {
555
+ "type": "string"
556
+ },
557
+ "loadedBy": {
558
+ "type": "string"
559
+ },
560
+ "discoveryRoot": {
561
+ "type": [
562
+ "string",
563
+ "null"
564
+ ]
565
+ },
566
+ "priority": {
567
+ "type": "string"
568
+ },
569
+ "source": {
570
+ "type": "string"
571
+ }
572
+ },
573
+ "additionalProperties": false
574
+ },
575
+ "selectedDuplicateLoad": {
576
+ "type": "object",
577
+ "required": [
578
+ "path",
579
+ "contentHash",
580
+ "toolOwner",
581
+ "loadedBy",
582
+ "discoveryRoot",
583
+ "priority",
584
+ "source",
585
+ "selectionReason"
586
+ ],
587
+ "properties": {
588
+ "path": {
589
+ "type": "string"
590
+ },
591
+ "contentHash": {
592
+ "type": [
593
+ "string",
594
+ "null"
595
+ ]
596
+ },
597
+ "toolOwner": {
598
+ "type": "string"
599
+ },
600
+ "loadedBy": {
601
+ "type": "string"
602
+ },
603
+ "discoveryRoot": {
604
+ "type": [
605
+ "string",
606
+ "null"
607
+ ]
608
+ },
609
+ "priority": {
610
+ "type": "string"
611
+ },
612
+ "source": {
613
+ "type": "string"
614
+ },
615
+ "selectionReason": {
616
+ "type": "string"
617
+ }
618
+ },
619
+ "additionalProperties": false
195
620
  }
196
621
  }
197
622
  }