pluribus-context 0.3.22 → 0.3.27
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 +33 -3
- package/README.md +9 -2
- package/docs/community-review-packet.md +10 -2
- package/docs/context-budget-receipts.md +152 -0
- package/docs/context-input-evidence.md +397 -0
- package/docs/context-receipts-for-agent-observability.md +177 -0
- package/docs/orchestration-search-receipts.md +102 -0
- package/docs/portability-fidelity-report.md +4 -2
- package/examples/agent-skills/context-receipts/README.md +22 -0
- package/examples/agent-skills/context-receipts/SKILL.md +89 -0
- package/examples/context-input-evidence/AGENTS.md +12 -0
- package/examples/context-input-evidence/agent-overlay-log.jsonl +4 -0
- package/examples/context-input-evidence/agent-overlay-otel-trace.json +548 -0
- package/examples/context-input-evidence/agent-overlay-receipt.ndjson +3 -0
- package/examples/context-input-evidence/agentgateway-progressive-disclosure-otel-trace.json +393 -0
- package/examples/context-input-evidence/agentgateway-progressive-disclosure-receipt.ndjson +4 -0
- package/examples/context-input-evidence/brain-remediation-otel-trace.json +645 -0
- package/examples/context-input-evidence/brain-remediation-receipt.ndjson +7 -0
- package/examples/context-input-evidence/claudekit-mcp-manager-otel-trace.json +417 -0
- package/examples/context-input-evidence/claudekit-mcp-manager-receipt.ndjson +5 -0
- package/examples/context-input-evidence/cli-progressive-disclosure-otel-trace.json +399 -0
- package/examples/context-input-evidence/cli-progressive-disclosure-receipt.ndjson +4 -0
- package/examples/context-input-evidence/compaction-otel-trace.json +711 -0
- package/examples/context-input-evidence/compaction-receipt.ndjson +6 -0
- package/examples/context-input-evidence/context-selection-otel-trace.json +627 -0
- package/examples/context-input-evidence/context-selection-receipt.ndjson +7 -0
- package/examples/context-input-evidence/convert-agent-overlay-log.mjs +156 -0
- package/examples/context-input-evidence/convert-agentgateway-progressive-disclosure-log.mjs +251 -0
- package/examples/context-input-evidence/convert-brain-remediation-log.mjs +241 -0
- package/examples/context-input-evidence/convert-claudekit-mcp-manager-log.mjs +253 -0
- package/examples/context-input-evidence/convert-cli-progressive-disclosure-log.mjs +251 -0
- package/examples/context-input-evidence/convert-compaction-log.mjs +224 -0
- package/examples/context-input-evidence/convert-context-selection-log.mjs +247 -0
- package/examples/context-input-evidence/convert-mcp-tool-search-log.mjs +242 -0
- package/examples/context-input-evidence/convert-memory-consolidation-log.mjs +240 -0
- package/examples/context-input-evidence/convert-memory-governance-delete-log.mjs +223 -0
- package/examples/context-input-evidence/convert-memory-log.mjs +226 -0
- package/examples/context-input-evidence/convert-memory-provenance-log.mjs +263 -0
- package/examples/context-input-evidence/convert-secret-scanning-log.mjs +233 -0
- package/examples/context-input-evidence/convert-session-log.mjs +186 -0
- package/examples/context-input-evidence/convert-skill-log.mjs +161 -0
- package/examples/context-input-evidence/convert-skill-registry-log.mjs +246 -0
- package/examples/context-input-evidence/convert-skill-routing-log.mjs +253 -0
- package/examples/context-input-evidence/convert-subagent-context-budget-log.mjs +267 -0
- package/examples/context-input-evidence/convert-subagent-delegation-log.mjs +264 -0
- package/examples/context-input-evidence/export-otel-trace.mjs +128 -0
- package/examples/context-input-evidence/generate-receipt.mjs +188 -0
- package/examples/context-input-evidence/mcp-tool-search-otel-trace.json +477 -0
- package/examples/context-input-evidence/mcp-tool-search-receipt.ndjson +5 -0
- package/examples/context-input-evidence/memory-consolidation-otel-trace.json +492 -0
- package/examples/context-input-evidence/memory-consolidation-receipt.ndjson +4 -0
- package/examples/context-input-evidence/memory-governance-delete-otel-trace.json +614 -0
- package/examples/context-input-evidence/memory-governance-delete-receipt.ndjson +5 -0
- package/examples/context-input-evidence/memory-otel-trace.json +645 -0
- package/examples/context-input-evidence/memory-provenance-otel-trace.json +711 -0
- package/examples/context-input-evidence/memory-provenance-receipt.ndjson +5 -0
- package/examples/context-input-evidence/memory-receipt.ndjson +4 -0
- package/examples/context-input-evidence/otel-trace.json +1119 -0
- package/examples/context-input-evidence/receipt.ndjson +6 -0
- package/examples/context-input-evidence/sample-agentgateway-progressive-disclosure-log.jsonl +5 -0
- package/examples/context-input-evidence/sample-brain-remediation-log.jsonl +9 -0
- package/examples/context-input-evidence/sample-claudekit-mcp-manager-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-cli-progressive-disclosure-log.jsonl +5 -0
- package/examples/context-input-evidence/sample-compaction-log.jsonl +7 -0
- package/examples/context-input-evidence/sample-context-selection-log.jsonl +7 -0
- package/examples/context-input-evidence/sample-mcp-tool-search-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-memory-consolidation-log.jsonl +5 -0
- package/examples/context-input-evidence/sample-memory-governance-delete-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-memory-provenance-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-memory-retrieval-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-secret-scanning-log.jsonl +7 -0
- package/examples/context-input-evidence/sample-session-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-skill-registry-log.jsonl +5 -0
- package/examples/context-input-evidence/sample-skill-routing-log.jsonl +7 -0
- package/examples/context-input-evidence/sample-subagent-context-budget-log.jsonl +6 -0
- package/examples/context-input-evidence/sample-subagent-delegation-log.jsonl +5 -0
- package/examples/context-input-evidence/secret-scanning-otel-trace.json +794 -0
- package/examples/context-input-evidence/secret-scanning-receipt.ndjson +6 -0
- package/examples/context-input-evidence/session-otel-trace.json +411 -0
- package/examples/context-input-evidence/session-receipt.ndjson +2 -0
- package/examples/context-input-evidence/skill-invocation-log.jsonl +4 -0
- package/examples/context-input-evidence/skill-otel-trace.json +548 -0
- package/examples/context-input-evidence/skill-receipt.ndjson +3 -0
- package/examples/context-input-evidence/skill-registry-otel-trace.json +471 -0
- package/examples/context-input-evidence/skill-registry-receipt.ndjson +5 -0
- package/examples/context-input-evidence/skill-routing-otel-trace.json +567 -0
- package/examples/context-input-evidence/skill-routing-receipt.ndjson +6 -0
- package/examples/context-input-evidence/subagent-context-budget-otel-trace.json +507 -0
- package/examples/context-input-evidence/subagent-context-budget-receipt.ndjson +5 -0
- package/examples/context-input-evidence/subagent-delegation-otel-trace.json +388 -0
- package/examples/context-input-evidence/subagent-delegation-receipt.ndjson +4 -0
- package/package.json +6 -2
- package/schemas/audit-result.schema.json +409 -71
- package/src/commands/audit.js +64 -3
- package/src/utils/version.js +1 -1
package/src/commands/audit.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import * as fs from 'fs'
|
|
11
11
|
import * as path from 'path'
|
|
12
|
+
import { createHash } from 'crypto'
|
|
12
13
|
import { parsePluribusFile, validateSections, REQUIRED_SECTIONS } from '../utils/parser.js'
|
|
13
14
|
import { resolveImportsAsync } from '../utils/imports.js'
|
|
14
15
|
import { renderTemplate, parseSkillFile } from '../utils/renderer.js'
|
|
@@ -294,7 +295,9 @@ function buildFidelityReport({ cwd, sections, tools, loadSkill }) {
|
|
|
294
295
|
const discovery = inferDiscovery(toolId, outputFiles)
|
|
295
296
|
const represented = presentSections.filter((name) => representedSections.has(name.toLowerCase()))
|
|
296
297
|
|
|
298
|
+
const rendered = renderTemplate(skill.template, sections, 'pluribus.md')
|
|
297
299
|
const loadEvidence = inferLoadEvidence(toolId, outputFiles, discovery, activation)
|
|
300
|
+
const duplicateLoadEvidence = inferDuplicateLoadEvidence(toolId, outputFiles, loadEvidence, rendered)
|
|
298
301
|
const effectiveContext = inferEffectiveContext(toolId, outputFiles, loadEvidence)
|
|
299
302
|
|
|
300
303
|
return {
|
|
@@ -306,8 +309,9 @@ function buildFidelityReport({ cwd, sections, tools, loadSkill }) {
|
|
|
306
309
|
manualActivationRequired: discovery.manualActivationRequired,
|
|
307
310
|
activation,
|
|
308
311
|
loadEvidence,
|
|
312
|
+
duplicateLoadEvidence,
|
|
309
313
|
effectiveContext,
|
|
310
|
-
semanticDifference: summarizeSemanticDifference({ unsupportedSections, activation, discovery, effectiveContext, loadEvidence }),
|
|
314
|
+
semanticDifference: summarizeSemanticDifference({ unsupportedSections, activation, discovery, effectiveContext, loadEvidence, duplicateLoadEvidence }),
|
|
311
315
|
representedSections: represented,
|
|
312
316
|
unsupportedSections,
|
|
313
317
|
}
|
|
@@ -348,6 +352,14 @@ function buildFidelityReport({ cwd, sections, tools, loadSkill }) {
|
|
|
348
352
|
})
|
|
349
353
|
}
|
|
350
354
|
|
|
355
|
+
if (targets.some((target) => target.duplicateLoadEvidence?.duplicateRisk === 'unknown')) {
|
|
356
|
+
warnings.push({
|
|
357
|
+
code: 'duplicate-load-selection-not-proven',
|
|
358
|
+
target: '*',
|
|
359
|
+
message: 'Duplicate load evidence records the Pluribus generated candidate, but does not inspect runtime scanner roots, caches, plugins, or sibling tool directories to prove which duplicate candidate the agent selected or suppressed.',
|
|
360
|
+
})
|
|
361
|
+
}
|
|
362
|
+
|
|
351
363
|
const advancedSections = ['workflow', 'context', 'examples', 'anti-patterns'].filter((name) => lowerPresentSections.has(name))
|
|
352
364
|
if (advancedSections.length > 0 && warnings.some((warning) => warning.code === 'section-not-rendered-by-target')) {
|
|
353
365
|
warnings.push({
|
|
@@ -428,6 +440,48 @@ function inferLoadEvidence(toolId, outputFiles, discovery, activation) {
|
|
|
428
440
|
}
|
|
429
441
|
}
|
|
430
442
|
|
|
443
|
+
|
|
444
|
+
function inferDuplicateLoadEvidence(toolId, outputFiles, loadEvidence, rendered) {
|
|
445
|
+
const primaryFile = outputFiles[0] || null
|
|
446
|
+
const contentHash = typeof rendered === 'string'
|
|
447
|
+
? `sha256:${createHash('sha256').update(rendered, 'utf8').digest('hex')}`
|
|
448
|
+
: null
|
|
449
|
+
const candidateLoads = primaryFile
|
|
450
|
+
? [{
|
|
451
|
+
path: primaryFile,
|
|
452
|
+
contentHash,
|
|
453
|
+
toolOwner: toolId,
|
|
454
|
+
loadedBy: loadEvidence.loadedBy,
|
|
455
|
+
discoveryRoot: inferDiscoveryRoot(primaryFile),
|
|
456
|
+
priority: 'not-modeled',
|
|
457
|
+
source: 'pluribus-generated-output',
|
|
458
|
+
}]
|
|
459
|
+
: []
|
|
460
|
+
|
|
461
|
+
return {
|
|
462
|
+
contentIdentity: contentHash,
|
|
463
|
+
candidateLoads,
|
|
464
|
+
selectedLoad: candidateLoads[0]
|
|
465
|
+
? {
|
|
466
|
+
...candidateLoads[0],
|
|
467
|
+
selectionReason: 'only-pluribus-generated-output-for-target',
|
|
468
|
+
}
|
|
469
|
+
: null,
|
|
470
|
+
suppressedLoads: [],
|
|
471
|
+
selectionPolicy: 'not-proven-runtime-selection',
|
|
472
|
+
crossRootScanMode: 'not-inspected',
|
|
473
|
+
duplicateRisk: 'unknown',
|
|
474
|
+
invariant: 'For each session_id + logical context or skill name + content hash, inject at most one effective definition unless the second load is explicitly marked as replace or supplement.',
|
|
475
|
+
note: `${toolId} duplicate-load evidence covers the Pluribus generated output only; verify runtime scanner roots, caches, plugins, hooks, imports, and sibling tool directories before claiming duplicate suppression.`,
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
function inferDiscoveryRoot(file) {
|
|
480
|
+
if (!file) return null
|
|
481
|
+
const dirname = path.dirname(file)
|
|
482
|
+
return dirname === '.' ? 'repo-root' : dirname
|
|
483
|
+
}
|
|
484
|
+
|
|
431
485
|
function inferEffectiveContext(toolId, outputFiles, loadEvidence) {
|
|
432
486
|
return {
|
|
433
487
|
scope: 'repo-root',
|
|
@@ -442,7 +496,7 @@ function inferEffectiveContext(toolId, outputFiles, loadEvidence) {
|
|
|
442
496
|
}
|
|
443
497
|
}
|
|
444
498
|
|
|
445
|
-
function summarizeSemanticDifference({ unsupportedSections, activation, discovery, effectiveContext, loadEvidence }) {
|
|
499
|
+
function summarizeSemanticDifference({ unsupportedSections, activation, discovery, effectiveContext, loadEvidence, duplicateLoadEvidence }) {
|
|
446
500
|
const differences = []
|
|
447
501
|
|
|
448
502
|
if (unsupportedSections.length > 0) {
|
|
@@ -469,6 +523,10 @@ function summarizeSemanticDifference({ unsupportedSections, activation, discover
|
|
|
469
523
|
differences.push('runtime-load-dedupe-not-proven')
|
|
470
524
|
}
|
|
471
525
|
|
|
526
|
+
if (duplicateLoadEvidence?.duplicateRisk === 'unknown') {
|
|
527
|
+
differences.push('duplicate-load-selection-not-proven')
|
|
528
|
+
}
|
|
529
|
+
|
|
472
530
|
return differences.length > 0 ? differences : ['no-known-template-loss']
|
|
473
531
|
}
|
|
474
532
|
|
|
@@ -491,10 +549,13 @@ function printFidelityReport(report) {
|
|
|
491
549
|
const loadedBy = target.loadEvidence?.loadedBy
|
|
492
550
|
? `; loaded by: ${target.loadEvidence.loadedBy}`
|
|
493
551
|
: ''
|
|
552
|
+
const duplicateSelection = target.duplicateLoadEvidence?.duplicateRisk
|
|
553
|
+
? `; duplicate selection: ${target.duplicateLoadEvidence.duplicateRisk}`
|
|
554
|
+
: ''
|
|
494
555
|
const semantics = target.semanticDifference?.length
|
|
495
556
|
? `; semantic: ${target.semanticDifference.join(', ')}`
|
|
496
557
|
: ''
|
|
497
|
-
console.log(` • ${target.toolId}: ${target.activation.kind}${discovery}${scope}${loadedBy}${unsupported}${semantics}`)
|
|
558
|
+
console.log(` • ${target.toolId}: ${target.activation.kind}${discovery}${scope}${loadedBy}${duplicateSelection}${unsupported}${semantics}`)
|
|
498
559
|
}
|
|
499
560
|
|
|
500
561
|
for (const warning of report.warnings) {
|
package/src/utils/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.3.
|
|
1
|
+
export const VERSION = '0.3.27'
|