@vorionsys/atsf-core 0.2.3 → 0.3.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.
- package/CHANGELOG.md +1 -0
- package/LICENSE +1 -1
- package/README.md +82 -29
- package/dist/adapters/base-adapter.d.ts +94 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +233 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +9 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +5 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/types.d.ts +83 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +4 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/webhook-handler.d.ts +64 -0
- package/dist/adapters/webhook-handler.d.ts.map +1 -0
- package/dist/adapters/webhook-handler.js +170 -0
- package/dist/adapters/webhook-handler.js.map +1 -0
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/server.d.ts +2 -2
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +149 -184
- package/dist/api/server.js.map +1 -1
- package/dist/arbitration/index.d.ts +4 -12
- package/dist/arbitration/index.d.ts.map +1 -1
- package/dist/arbitration/index.js +43 -46
- package/dist/arbitration/index.js.map +1 -1
- package/dist/arbitration/types.d.ts +10 -10
- package/dist/arbitration/types.d.ts.map +1 -1
- package/dist/arbitration/types.js +2 -8
- package/dist/arbitration/types.js.map +1 -1
- package/dist/basis/evaluator.d.ts +1 -6
- package/dist/basis/evaluator.d.ts.map +1 -1
- package/dist/basis/evaluator.js +56 -56
- package/dist/basis/evaluator.js.map +1 -1
- package/dist/basis/index.d.ts +3 -3
- package/dist/basis/index.d.ts.map +1 -1
- package/dist/basis/index.js +5 -3
- package/dist/basis/index.js.map +1 -1
- package/dist/basis/parser.d.ts +30 -30
- package/dist/basis/parser.d.ts.map +1 -1
- package/dist/basis/parser.js +27 -32
- package/dist/basis/parser.js.map +1 -1
- package/dist/basis/types.d.ts +2 -2
- package/dist/basis/types.d.ts.map +1 -1
- package/dist/basis/types.js +2 -3
- package/dist/basis/types.js.map +1 -1
- package/dist/chain/index.d.ts +0 -8
- package/dist/chain/index.d.ts.map +1 -1
- package/dist/chain/index.js +18 -16
- package/dist/chain/index.js.map +1 -1
- package/dist/cognigate/index.d.ts +1 -9
- package/dist/cognigate/index.d.ts.map +1 -1
- package/dist/cognigate/index.js +35 -44
- package/dist/cognigate/index.js.map +1 -1
- package/dist/common/adapters.d.ts +4 -4
- package/dist/common/adapters.d.ts.map +1 -1
- package/dist/common/adapters.js +54 -70
- package/dist/common/adapters.js.map +1 -1
- package/dist/common/config.d.ts +69 -68
- package/dist/common/config.d.ts.map +1 -1
- package/dist/common/config.js +52 -50
- package/dist/common/config.js.map +1 -1
- package/dist/common/index.d.ts +4 -4
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +6 -4
- package/dist/common/index.js.map +1 -1
- package/dist/common/logger.d.ts +1 -1
- package/dist/common/logger.d.ts.map +1 -1
- package/dist/common/logger.js +10 -8
- package/dist/common/logger.js.map +1 -1
- package/dist/common/types.d.ts +12 -12
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/types.js +7 -14
- package/dist/common/types.js.map +1 -1
- package/dist/containment/index.d.ts +3 -11
- package/dist/containment/index.d.ts.map +1 -1
- package/dist/containment/index.js +107 -119
- package/dist/containment/index.js.map +1 -1
- package/dist/containment/types.d.ts +11 -11
- package/dist/containment/types.d.ts.map +1 -1
- package/dist/containment/types.js +2 -8
- package/dist/containment/types.js.map +1 -1
- package/dist/contracts/index.d.ts +9 -17
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +56 -59
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/types.d.ts +12 -12
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/contracts/types.js +2 -8
- package/dist/contracts/types.js.map +1 -1
- package/dist/crewai/callback.d.ts +2 -9
- package/dist/crewai/callback.d.ts.map +1 -1
- package/dist/crewai/callback.js +29 -27
- package/dist/crewai/callback.js.map +1 -1
- package/dist/crewai/executor.d.ts +95 -11
- package/dist/crewai/executor.d.ts.map +1 -1
- package/dist/crewai/executor.js +459 -16
- package/dist/crewai/executor.js.map +1 -1
- package/dist/crewai/index.d.ts +4 -4
- package/dist/crewai/index.d.ts.map +1 -1
- package/dist/crewai/index.js +6 -4
- package/dist/crewai/index.js.map +1 -1
- package/dist/crewai/tools.d.ts +1 -1
- package/dist/crewai/tools.d.ts.map +1 -1
- package/dist/crewai/tools.js +40 -46
- package/dist/crewai/tools.js.map +1 -1
- package/dist/crewai/types.d.ts +66 -3
- package/dist/crewai/types.d.ts.map +1 -1
- package/dist/crewai/types.js +2 -7
- package/dist/crewai/types.js.map +1 -1
- package/dist/enforce/index.d.ts +226 -19
- package/dist/enforce/index.d.ts.map +1 -1
- package/dist/enforce/index.js +55 -81
- package/dist/enforce/index.js.map +1 -1
- package/dist/enforce/trust-aware-enforcement-service.d.ts +8 -23
- package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -1
- package/dist/enforce/trust-aware-enforcement-service.js +109 -125
- package/dist/enforce/trust-aware-enforcement-service.js.map +1 -1
- package/dist/governance/fluid-workflow.d.ts +8 -16
- package/dist/governance/fluid-workflow.d.ts.map +1 -1
- package/dist/governance/fluid-workflow.js +88 -114
- package/dist/governance/fluid-workflow.js.map +1 -1
- package/dist/governance/index.d.ts +7 -15
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +76 -81
- package/dist/governance/index.js.map +1 -1
- package/dist/governance/proof-bridge.d.ts +6 -6
- package/dist/governance/proof-bridge.d.ts.map +1 -1
- package/dist/governance/proof-bridge.js +6 -16
- package/dist/governance/proof-bridge.js.map +1 -1
- package/dist/governance/types.d.ts +9 -16
- package/dist/governance/types.d.ts.map +1 -1
- package/dist/governance/types.js +2 -8
- package/dist/governance/types.js.map +1 -1
- package/dist/index.d.ts +30 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -31
- package/dist/index.js.map +1 -1
- package/dist/intent/index.d.ts +55 -18
- package/dist/intent/index.d.ts.map +1 -1
- package/dist/intent/index.js +25 -26
- package/dist/intent/index.js.map +1 -1
- package/dist/intent/persistent-intent-service.d.ts +2 -17
- package/dist/intent/persistent-intent-service.d.ts.map +1 -1
- package/dist/intent/persistent-intent-service.js +33 -43
- package/dist/intent/persistent-intent-service.js.map +1 -1
- package/dist/intent/supabase-intent-repository.d.ts +107 -0
- package/dist/intent/supabase-intent-repository.d.ts.map +1 -0
- package/dist/intent/supabase-intent-repository.js +406 -0
- package/dist/intent/supabase-intent-repository.js.map +1 -0
- package/dist/intent-gateway/index.d.ts +5 -28
- package/dist/intent-gateway/index.d.ts.map +1 -1
- package/dist/intent-gateway/index.js +341 -508
- package/dist/intent-gateway/index.js.map +1 -1
- package/dist/langchain/callback.d.ts +2 -9
- package/dist/langchain/callback.d.ts.map +1 -1
- package/dist/langchain/callback.js +32 -30
- package/dist/langchain/callback.js.map +1 -1
- package/dist/langchain/executor.d.ts +4 -11
- package/dist/langchain/executor.d.ts.map +1 -1
- package/dist/langchain/executor.js +82 -82
- package/dist/langchain/executor.js.map +1 -1
- package/dist/langchain/index.d.ts +5 -5
- package/dist/langchain/index.d.ts.map +1 -1
- package/dist/langchain/index.js +7 -5
- package/dist/langchain/index.js.map +1 -1
- package/dist/langchain/tools.d.ts +1 -1
- package/dist/langchain/tools.d.ts.map +1 -1
- package/dist/langchain/tools.js +36 -43
- package/dist/langchain/tools.js.map +1 -1
- package/dist/langchain/types.d.ts +3 -3
- package/dist/langchain/types.d.ts.map +1 -1
- package/dist/langchain/types.js +2 -7
- package/dist/langchain/types.js.map +1 -1
- package/dist/layers/implementations/L0-request-format.d.ts +2 -2
- package/dist/layers/implementations/L0-request-format.d.ts.map +1 -1
- package/dist/layers/implementations/L0-request-format.js +54 -54
- package/dist/layers/implementations/L0-request-format.js.map +1 -1
- package/dist/layers/implementations/L1-input-size.d.ts +2 -2
- package/dist/layers/implementations/L1-input-size.d.ts.map +1 -1
- package/dist/layers/implementations/L1-input-size.js +41 -49
- package/dist/layers/implementations/L1-input-size.js.map +1 -1
- package/dist/layers/implementations/L2-charset-sanitizer.d.ts +2 -2
- package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -1
- package/dist/layers/implementations/L2-charset-sanitizer.js +73 -81
- package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -1
- package/dist/layers/implementations/L3-schema-conformance.d.ts +3 -3
- package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -1
- package/dist/layers/implementations/L3-schema-conformance.js +75 -82
- package/dist/layers/implementations/L3-schema-conformance.js.map +1 -1
- package/dist/layers/implementations/L4-injection-detector.d.ts +4 -4
- package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -1
- package/dist/layers/implementations/L4-injection-detector.js +83 -85
- package/dist/layers/implementations/L4-injection-detector.js.map +1 -1
- package/dist/layers/implementations/L5-rate-limiter.d.ts +2 -2
- package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -1
- package/dist/layers/implementations/L5-rate-limiter.js +22 -20
- package/dist/layers/implementations/L5-rate-limiter.js.map +1 -1
- package/dist/layers/implementations/index.d.ts +6 -6
- package/dist/layers/implementations/index.d.ts.map +1 -1
- package/dist/layers/implementations/index.js +8 -6
- package/dist/layers/implementations/index.js.map +1 -1
- package/dist/layers/index.d.ts +3 -11
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +73 -99
- package/dist/layers/index.js.map +1 -1
- package/dist/layers/types.d.ts +16 -16
- package/dist/layers/types.d.ts.map +1 -1
- package/dist/layers/types.js +2 -8
- package/dist/layers/types.js.map +1 -1
- package/dist/paramesphere/activation-collector.d.ts +128 -0
- package/dist/paramesphere/activation-collector.d.ts.map +1 -0
- package/dist/paramesphere/activation-collector.js +260 -0
- package/dist/paramesphere/activation-collector.js.map +1 -0
- package/dist/paramesphere/cognitive-envelope.d.ts +73 -0
- package/dist/paramesphere/cognitive-envelope.d.ts.map +1 -0
- package/dist/paramesphere/cognitive-envelope.js +209 -0
- package/dist/paramesphere/cognitive-envelope.js.map +1 -0
- package/dist/paramesphere/envelope-integration.d.ts +60 -0
- package/dist/paramesphere/envelope-integration.d.ts.map +1 -0
- package/dist/paramesphere/envelope-integration.js +93 -0
- package/dist/paramesphere/envelope-integration.js.map +1 -0
- package/dist/paramesphere/fingerprint-monitor.d.ts +136 -0
- package/dist/paramesphere/fingerprint-monitor.d.ts.map +1 -0
- package/dist/paramesphere/fingerprint-monitor.js +212 -0
- package/dist/paramesphere/fingerprint-monitor.js.map +1 -0
- package/dist/paramesphere/fingerprint-store.d.ts +85 -0
- package/dist/paramesphere/fingerprint-store.d.ts.map +1 -0
- package/dist/paramesphere/fingerprint-store.js +68 -0
- package/dist/paramesphere/fingerprint-store.js.map +1 -0
- package/dist/paramesphere/index.d.ts +21 -0
- package/dist/paramesphere/index.d.ts.map +1 -0
- package/dist/paramesphere/index.js +18 -0
- package/dist/paramesphere/index.js.map +1 -0
- package/dist/paramesphere/monitor-integration.d.ts +37 -0
- package/dist/paramesphere/monitor-integration.d.ts.map +1 -0
- package/dist/paramesphere/monitor-integration.js +81 -0
- package/dist/paramesphere/monitor-integration.js.map +1 -0
- package/dist/paramesphere/paramesphere-engine.d.ts +111 -0
- package/dist/paramesphere/paramesphere-engine.d.ts.map +1 -0
- package/dist/paramesphere/paramesphere-engine.js +542 -0
- package/dist/paramesphere/paramesphere-engine.js.map +1 -0
- package/dist/paramesphere/types.d.ts +142 -0
- package/dist/paramesphere/types.d.ts.map +1 -0
- package/dist/paramesphere/types.js +4 -0
- package/dist/paramesphere/types.js.map +1 -0
- package/dist/persistence/file.d.ts +3 -10
- package/dist/persistence/file.d.ts.map +1 -1
- package/dist/persistence/file.js +30 -32
- package/dist/persistence/file.js.map +1 -1
- package/dist/persistence/index.d.ts +7 -7
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +20 -18
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/memory.d.ts +3 -3
- package/dist/persistence/memory.d.ts.map +1 -1
- package/dist/persistence/memory.js +10 -17
- package/dist/persistence/memory.js.map +1 -1
- package/dist/persistence/sqlite.d.ts +3 -11
- package/dist/persistence/sqlite.d.ts.map +1 -1
- package/dist/persistence/sqlite.js +42 -39
- package/dist/persistence/sqlite.js.map +1 -1
- package/dist/persistence/supabase.d.ts +3 -3
- package/dist/persistence/supabase.d.ts.map +1 -1
- package/dist/persistence/supabase.js +46 -49
- package/dist/persistence/supabase.js.map +1 -1
- package/dist/persistence/types.d.ts +5 -5
- package/dist/persistence/types.d.ts.map +1 -1
- package/dist/persistence/types.js +2 -7
- package/dist/persistence/types.js.map +1 -1
- package/dist/phase6/ceiling.d.ts +5 -21
- package/dist/phase6/ceiling.d.ts.map +1 -1
- package/dist/phase6/ceiling.js +38 -69
- package/dist/phase6/ceiling.js.map +1 -1
- package/dist/phase6/context.d.ts +3 -20
- package/dist/phase6/context.d.ts.map +1 -1
- package/dist/phase6/context.js +49 -93
- package/dist/phase6/context.js.map +1 -1
- package/dist/phase6/index.d.ts +12 -12
- package/dist/phase6/index.d.ts.map +1 -1
- package/dist/phase6/index.js +17 -15
- package/dist/phase6/index.js.map +1 -1
- package/dist/phase6/presets.d.ts +2 -18
- package/dist/phase6/presets.d.ts.map +1 -1
- package/dist/phase6/presets.js +35 -39
- package/dist/phase6/presets.js.map +1 -1
- package/dist/phase6/provenance.d.ts +4 -19
- package/dist/phase6/provenance.d.ts.map +1 -1
- package/dist/phase6/provenance.js +37 -42
- package/dist/phase6/provenance.js.map +1 -1
- package/dist/phase6/role-gates/index.d.ts +2 -2
- package/dist/phase6/role-gates/index.d.ts.map +1 -1
- package/dist/phase6/role-gates/index.js +4 -2
- package/dist/phase6/role-gates/index.js.map +1 -1
- package/dist/phase6/role-gates/kernel.d.ts.map +1 -1
- package/dist/phase6/role-gates/kernel.js +18 -16
- package/dist/phase6/role-gates/kernel.js.map +1 -1
- package/dist/phase6/role-gates/policy.d.ts +2 -2
- package/dist/phase6/role-gates/policy.d.ts.map +1 -1
- package/dist/phase6/role-gates/policy.js +8 -17
- package/dist/phase6/role-gates/policy.js.map +1 -1
- package/dist/phase6/role-gates.d.ts +4 -20
- package/dist/phase6/role-gates.d.ts.map +1 -1
- package/dist/phase6/role-gates.js +60 -80
- package/dist/phase6/role-gates.js.map +1 -1
- package/dist/phase6/types.d.ts +53 -23
- package/dist/phase6/types.d.ts.map +1 -1
- package/dist/phase6/types.js +131 -177
- package/dist/phase6/types.js.map +1 -1
- package/dist/phase6/weight-presets/canonical.d.ts.map +1 -1
- package/dist/phase6/weight-presets/canonical.js +12 -10
- package/dist/phase6/weight-presets/canonical.js.map +1 -1
- package/dist/phase6/weight-presets/deltas.d.ts +2 -2
- package/dist/phase6/weight-presets/deltas.d.ts.map +1 -1
- package/dist/phase6/weight-presets/deltas.js +29 -37
- package/dist/phase6/weight-presets/deltas.js.map +1 -1
- package/dist/phase6/weight-presets/index.d.ts +3 -3
- package/dist/phase6/weight-presets/index.d.ts.map +1 -1
- package/dist/phase6/weight-presets/index.js +5 -3
- package/dist/phase6/weight-presets/index.js.map +1 -1
- package/dist/phase6/weight-presets/merger.d.ts +2 -12
- package/dist/phase6/weight-presets/merger.d.ts.map +1 -1
- package/dist/phase6/weight-presets/merger.js +45 -39
- package/dist/phase6/weight-presets/merger.js.map +1 -1
- package/dist/proof/index.d.ts +6 -13
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +63 -51
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/merkle.d.ts +24 -19
- package/dist/proof/merkle.d.ts.map +1 -1
- package/dist/proof/merkle.js +118 -32
- package/dist/proof/merkle.js.map +1 -1
- package/dist/proof/zk-proofs.d.ts +6 -24
- package/dist/proof/zk-proofs.d.ts.map +1 -1
- package/dist/proof/zk-proofs.js +45 -42
- package/dist/proof/zk-proofs.js.map +1 -1
- package/dist/provenance/index.d.ts +3 -11
- package/dist/provenance/index.d.ts.map +1 -1
- package/dist/provenance/index.js +19 -19
- package/dist/provenance/index.js.map +1 -1
- package/dist/provenance/types.d.ts +4 -4
- package/dist/provenance/types.d.ts.map +1 -1
- package/dist/provenance/types.js +2 -8
- package/dist/provenance/types.js.map +1 -1
- package/dist/sandbox-training/challenges.d.ts +1 -1
- package/dist/sandbox-training/challenges.d.ts.map +1 -1
- package/dist/sandbox-training/challenges.js +230 -236
- package/dist/sandbox-training/challenges.js.map +1 -1
- package/dist/sandbox-training/graduation.d.ts +1 -1
- package/dist/sandbox-training/graduation.d.ts.map +1 -1
- package/dist/sandbox-training/graduation.js +17 -22
- package/dist/sandbox-training/graduation.js.map +1 -1
- package/dist/sandbox-training/index.d.ts +9 -9
- package/dist/sandbox-training/index.d.ts.map +1 -1
- package/dist/sandbox-training/index.js +8 -6
- package/dist/sandbox-training/index.js.map +1 -1
- package/dist/sandbox-training/promotion-service.d.ts +4 -4
- package/dist/sandbox-training/promotion-service.d.ts.map +1 -1
- package/dist/sandbox-training/promotion-service.js +7 -16
- package/dist/sandbox-training/promotion-service.js.map +1 -1
- package/dist/sandbox-training/runner.d.ts +1 -1
- package/dist/sandbox-training/runner.d.ts.map +1 -1
- package/dist/sandbox-training/runner.js +75 -82
- package/dist/sandbox-training/runner.js.map +1 -1
- package/dist/sandbox-training/scorer.d.ts +4 -4
- package/dist/sandbox-training/scorer.d.ts.map +1 -1
- package/dist/sandbox-training/scorer.js +7 -13
- package/dist/sandbox-training/scorer.js.map +1 -1
- package/dist/sandbox-training/types.d.ts +4 -4
- package/dist/sandbox-training/types.d.ts.map +1 -1
- package/dist/sandbox-training/types.js +9 -19
- package/dist/sandbox-training/types.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts +1 -9
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.js +6 -11
- package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/index.d.ts +2 -2
- package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/index.js +4 -2
- package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +12 -10
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/kernel.js +28 -20
- package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -1
- package/dist/trust-engine/context-policy/enforcement.d.ts +0 -9
- package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/enforcement.js +2 -9
- package/dist/trust-engine/context-policy/enforcement.js.map +1 -1
- package/dist/trust-engine/context-policy/factory.d.ts +1 -1
- package/dist/trust-engine/context-policy/factory.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/factory.js +3 -1
- package/dist/trust-engine/context-policy/factory.js.map +1 -1
- package/dist/trust-engine/context-policy/index.d.ts +2 -2
- package/dist/trust-engine/context-policy/index.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/index.js +4 -2
- package/dist/trust-engine/context-policy/index.js.map +1 -1
- package/dist/trust-engine/creation-modifiers/index.d.ts +1 -1
- package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -1
- package/dist/trust-engine/creation-modifiers/index.js +3 -1
- package/dist/trust-engine/creation-modifiers/index.js.map +1 -1
- package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -1
- package/dist/trust-engine/creation-modifiers/types.js +5 -2
- package/dist/trust-engine/creation-modifiers/types.js.map +1 -1
- package/dist/trust-engine/decay-profiles.d.ts +37 -136
- package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
- package/dist/trust-engine/decay-profiles.js +61 -183
- package/dist/trust-engine/decay-profiles.js.map +1 -1
- package/dist/trust-engine/index.d.ts +327 -22
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +706 -130
- package/dist/trust-engine/index.js.map +1 -1
- package/dist/trust-engine/phase6-types.d.ts +15 -18
- package/dist/trust-engine/phase6-types.d.ts.map +1 -1
- package/dist/trust-engine/phase6-types.js +32 -36
- package/dist/trust-engine/phase6-types.js.map +1 -1
- package/dist/trust-engine/trust-verifier.d.ts +121 -0
- package/dist/trust-engine/trust-verifier.d.ts.map +1 -0
- package/dist/trust-engine/trust-verifier.js +226 -0
- package/dist/trust-engine/trust-verifier.js.map +1 -0
- package/package.json +140 -135
- package/dist/enforce/types.d.ts +0 -234
- package/dist/enforce/types.d.ts.map +0 -1
- package/dist/enforce/types.js +0 -10
- package/dist/enforce/types.js.map +0 -1
- package/dist/intent/types.d.ts +0 -69
- package/dist/intent/types.d.ts.map +0 -1
- package/dist/intent/types.js +0 -10
- package/dist/intent/types.js.map +0 -1
- package/dist/trust-engine/types.d.ts +0 -77
- package/dist/trust-engine/types.d.ts.map +0 -1
- package/dist/trust-engine/types.js +0 -20
- package/dist/trust-engine/types.js.map +0 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2024-2026 Vorion LLC
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Defaults
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const DEFAULT_CHECK_INTERVAL_MS = 300_000; // 5 minutes
|
|
7
|
+
const DEFAULT_DRIFT_THRESHOLD = 0.05;
|
|
8
|
+
const TAMPERING_MULTIPLIER = 2;
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// FingerprintMonitor
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
export class FingerprintMonitor {
|
|
13
|
+
engine;
|
|
14
|
+
checkIntervalMs;
|
|
15
|
+
driftThreshold;
|
|
16
|
+
emitTrustSignal;
|
|
17
|
+
onDriftDetected;
|
|
18
|
+
onFingerprintTaken;
|
|
19
|
+
onTamperingDetected;
|
|
20
|
+
entities = new Map();
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.engine = config.engine;
|
|
23
|
+
this.checkIntervalMs = config.checkIntervalMs ?? DEFAULT_CHECK_INTERVAL_MS;
|
|
24
|
+
this.driftThreshold = config.driftThreshold ?? DEFAULT_DRIFT_THRESHOLD;
|
|
25
|
+
this.emitTrustSignal = config.emitTrustSignal ?? true;
|
|
26
|
+
this.onDriftDetected = config.onDriftDetected;
|
|
27
|
+
this.onFingerprintTaken = config.onFingerprintTaken;
|
|
28
|
+
this.onTamperingDetected = config.onTamperingDetected;
|
|
29
|
+
}
|
|
30
|
+
// -----------------------------------------------------------------------
|
|
31
|
+
// Public API
|
|
32
|
+
// -----------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Start monitoring an entity's model weights.
|
|
35
|
+
*
|
|
36
|
+
* The first scheduled check establishes the baseline fingerprint.
|
|
37
|
+
* Subsequent checks compare against that baseline.
|
|
38
|
+
*
|
|
39
|
+
* @param entityId Unique identifier for the monitored entity / model.
|
|
40
|
+
* @param getWeights Callback that returns the current weight matrices.
|
|
41
|
+
*/
|
|
42
|
+
startMonitoring(entityId, getWeights) {
|
|
43
|
+
// If already monitoring, stop first to avoid orphaned timers
|
|
44
|
+
if (this.entities.has(entityId)) {
|
|
45
|
+
this.stopMonitoring(entityId);
|
|
46
|
+
}
|
|
47
|
+
const state = {
|
|
48
|
+
entityId,
|
|
49
|
+
getWeights,
|
|
50
|
+
baseline: null,
|
|
51
|
+
timer: null,
|
|
52
|
+
checksCompleted: 0,
|
|
53
|
+
driftsDetected: 0,
|
|
54
|
+
tamperingsDetected: 0,
|
|
55
|
+
lastCheck: null,
|
|
56
|
+
status: 'monitoring',
|
|
57
|
+
};
|
|
58
|
+
// Schedule recurring checks
|
|
59
|
+
state.timer = setInterval(() => {
|
|
60
|
+
void this.runCheck(state);
|
|
61
|
+
}, this.checkIntervalMs);
|
|
62
|
+
this.entities.set(entityId, state);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Stop monitoring an entity. Clears the interval and marks status
|
|
66
|
+
* as `stopped`. The entity remains in the map so stats are queryable.
|
|
67
|
+
*/
|
|
68
|
+
stopMonitoring(entityId) {
|
|
69
|
+
const state = this.entities.get(entityId);
|
|
70
|
+
if (!state)
|
|
71
|
+
return;
|
|
72
|
+
if (state.timer !== null) {
|
|
73
|
+
clearInterval(state.timer);
|
|
74
|
+
state.timer = null;
|
|
75
|
+
}
|
|
76
|
+
state.status = 'stopped';
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Manually trigger a fingerprint check outside the scheduled interval.
|
|
80
|
+
*/
|
|
81
|
+
async checkNow(entityId) {
|
|
82
|
+
const state = this.entities.get(entityId);
|
|
83
|
+
if (!state) {
|
|
84
|
+
throw new Error(`Entity "${entityId}" is not being monitored`);
|
|
85
|
+
}
|
|
86
|
+
return this.runCheck(state);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get monitoring status for an entity.
|
|
90
|
+
*/
|
|
91
|
+
getStatus(entityId) {
|
|
92
|
+
const state = this.entities.get(entityId);
|
|
93
|
+
if (!state)
|
|
94
|
+
return undefined;
|
|
95
|
+
return {
|
|
96
|
+
entityId: state.entityId,
|
|
97
|
+
lastCheck: state.lastCheck,
|
|
98
|
+
checksCompleted: state.checksCompleted,
|
|
99
|
+
driftsDetected: state.driftsDetected,
|
|
100
|
+
tamperingsDetected: state.tamperingsDetected,
|
|
101
|
+
status: state.status,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* List all entity IDs currently registered (monitoring or stopped).
|
|
106
|
+
*/
|
|
107
|
+
getMonitoredEntities() {
|
|
108
|
+
return Array.from(this.entities.keys());
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Replace the drift-detected callback. Allows integration layers to
|
|
112
|
+
* wire callbacks after construction without subclassing.
|
|
113
|
+
*/
|
|
114
|
+
setOnDriftDetected(cb) {
|
|
115
|
+
this.onDriftDetected = cb;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Replace the tampering-detected callback.
|
|
119
|
+
*/
|
|
120
|
+
setOnTamperingDetected(cb) {
|
|
121
|
+
this.onTamperingDetected = cb;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Replace the fingerprint-taken callback.
|
|
125
|
+
*/
|
|
126
|
+
setOnFingerprintTaken(cb) {
|
|
127
|
+
this.onFingerprintTaken = cb;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Stop all monitored entities and clear all state.
|
|
131
|
+
*/
|
|
132
|
+
shutdown() {
|
|
133
|
+
for (const [entityId] of this.entities) {
|
|
134
|
+
this.stopMonitoring(entityId);
|
|
135
|
+
}
|
|
136
|
+
this.entities.clear();
|
|
137
|
+
}
|
|
138
|
+
// -----------------------------------------------------------------------
|
|
139
|
+
// Internal
|
|
140
|
+
// -----------------------------------------------------------------------
|
|
141
|
+
async runCheck(state) {
|
|
142
|
+
const weights = state.getWeights();
|
|
143
|
+
const fingerprint = this.engine.computeFingerprint(weights);
|
|
144
|
+
const now = new Date();
|
|
145
|
+
// Notify fingerprint taken
|
|
146
|
+
this.onFingerprintTaken?.(state.entityId, fingerprint);
|
|
147
|
+
// First check — establish baseline
|
|
148
|
+
if (state.baseline === null) {
|
|
149
|
+
state.baseline = fingerprint;
|
|
150
|
+
this.engine.setBaseline(fingerprint);
|
|
151
|
+
state.checksCompleted++;
|
|
152
|
+
state.lastCheck = now;
|
|
153
|
+
return {
|
|
154
|
+
entityId: state.entityId,
|
|
155
|
+
fingerprint,
|
|
156
|
+
driftDetected: false,
|
|
157
|
+
tamperingDetected: false,
|
|
158
|
+
driftDistance: 0,
|
|
159
|
+
checkedAt: now,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// Compare against baseline
|
|
163
|
+
this.engine.setBaseline(state.baseline);
|
|
164
|
+
const driftResult = this.engine.checkDrift(fingerprint);
|
|
165
|
+
const distance = driftResult.cosineDistance;
|
|
166
|
+
const driftDetected = distance > this.driftThreshold;
|
|
167
|
+
const tamperingDetected = distance > this.driftThreshold * TAMPERING_MULTIPLIER;
|
|
168
|
+
// Update stats
|
|
169
|
+
state.checksCompleted++;
|
|
170
|
+
state.lastCheck = now;
|
|
171
|
+
if (driftDetected)
|
|
172
|
+
state.driftsDetected++;
|
|
173
|
+
if (tamperingDetected)
|
|
174
|
+
state.tamperingsDetected++;
|
|
175
|
+
// Fire callbacks
|
|
176
|
+
if (driftDetected) {
|
|
177
|
+
this.onDriftDetected?.(state.entityId, driftResult);
|
|
178
|
+
}
|
|
179
|
+
if (tamperingDetected) {
|
|
180
|
+
this.onTamperingDetected?.(state.entityId, driftResult);
|
|
181
|
+
}
|
|
182
|
+
// Build result
|
|
183
|
+
const result = {
|
|
184
|
+
entityId: state.entityId,
|
|
185
|
+
fingerprint,
|
|
186
|
+
driftDetected,
|
|
187
|
+
tamperingDetected,
|
|
188
|
+
driftDistance: distance,
|
|
189
|
+
checkedAt: now,
|
|
190
|
+
};
|
|
191
|
+
// Attach signal-ready payload if enabled and drift was detected
|
|
192
|
+
if (this.emitTrustSignal && driftDetected) {
|
|
193
|
+
result.trustSignal = {
|
|
194
|
+
entityId: state.entityId,
|
|
195
|
+
type: tamperingDetected ? 'TAMPERING_DETECTED' : 'ANOMALY_DETECTED',
|
|
196
|
+
value: tamperingDetected ? 0.0 : 0.1,
|
|
197
|
+
source: 'paramesphere:fingerprint-monitor',
|
|
198
|
+
timestamp: now.toISOString(),
|
|
199
|
+
metadata: {
|
|
200
|
+
cosineDistance: distance,
|
|
201
|
+
maxSingularValueDelta: driftResult.maxSingularValueDelta,
|
|
202
|
+
driftThreshold: this.driftThreshold,
|
|
203
|
+
tamperingThreshold: this.driftThreshold * TAMPERING_MULTIPLIER,
|
|
204
|
+
fingerprintSha256: fingerprint.sha256,
|
|
205
|
+
baselineSha256: state.baseline.sha256,
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=fingerprint-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint-monitor.js","sourceRoot":"","sources":["../../src/paramesphere/fingerprint-monitor.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AA2GjC,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,yBAAyB,GAAG,OAAO,CAAC,CAAC,YAAY;AACvD,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,OAAO,kBAAkB;IACZ,MAAM,CAAqB;IAC3B,eAAe,CAAS;IACxB,cAAc,CAAS;IACvB,eAAe,CAAU;IAClC,eAAe,CAAmD;IAClE,kBAAkB,CAAoE;IACtF,mBAAmB,CAAmD;IAE7D,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEhE,YAAY,MAAgC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,yBAAyB,CAAC;QAC3E,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,uBAAuB,CAAC;QACvE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QACtD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACxD,CAAC;IAED,0EAA0E;IAC1E,aAAa;IACb,0EAA0E;IAE1E;;;;;;;;OAQG;IACH,eAAe,CAAC,QAAgB,EAAE,UAAgC;QAChE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,KAAK,GAAgB;YACzB,QAAQ;YACR,UAAU;YACV,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,eAAe,EAAE,CAAC;YAClB,cAAc,EAAE,CAAC;YACjB,kBAAkB,EAAE,CAAC;YACrB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,YAAY;SACrB,CAAC;QAEF,4BAA4B;QAC5B,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACzB,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,0BAA0B,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,EAAiE;QAClF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,EAAiE;QACtF,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,EAAkF;QACtG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,0EAA0E;IAC1E,WAAW;IACX,0EAA0E;IAElE,KAAK,CAAC,QAAQ,CAAC,KAAkB;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,2BAA2B;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEvD,mCAAmC;QACnC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACrC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;YAEtB,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW;gBACX,aAAa,EAAE,KAAK;gBACpB,iBAAiB,EAAE,KAAK;gBACxB,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE,GAAG;aACf,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC;QAC5C,MAAM,aAAa,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QACrD,MAAM,iBAAiB,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,oBAAoB,CAAC;QAEhF,eAAe;QACf,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QACtB,IAAI,aAAa;YAAE,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,iBAAiB;YAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAElD,iBAAiB;QACjB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC;QAED,eAAe;QACf,MAAM,MAAM,GAAuB;YACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW;YACX,aAAa;YACb,iBAAiB;YACjB,aAAa,EAAE,QAAQ;YACvB,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,gEAAgE;QAChE,IAAI,IAAI,CAAC,eAAe,IAAI,aAAa,EAAE,CAAC;YAC1C,MAAM,CAAC,WAAW,GAAG;gBACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB;gBACnE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBACpC,MAAM,EAAE,kCAAkC;gBAC1C,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,QAAQ,EAAE;oBACR,cAAc,EAAE,QAAQ;oBACxB,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;oBACxD,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,kBAAkB,EAAE,IAAI,CAAC,cAAc,GAAG,oBAAoB;oBAC9D,iBAAiB,EAAE,WAAW,CAAC,MAAM;oBACrC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;iBACtC;aACF,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FingerprintStore — Persistence layer for ParameSphere fingerprints.
|
|
3
|
+
*
|
|
4
|
+
* Default: InMemoryFingerprintStore (current behavior, no external deps)
|
|
5
|
+
* Override: implement the IFingerprintStore interface for SQLite, Postgres,
|
|
6
|
+
* Redis, or any other backend.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Serialisable fingerprint record suitable for persistence.
|
|
12
|
+
*
|
|
13
|
+
* Unlike `ParameSphereFingerprint` (which carries Float64Array vectors),
|
|
14
|
+
* `StoredFingerprint` uses plain number arrays so it can be round-tripped
|
|
15
|
+
* through JSON, SQL columns, or key-value stores without special handling.
|
|
16
|
+
*/
|
|
17
|
+
export interface StoredFingerprint {
|
|
18
|
+
/** The entity (model / agent) this fingerprint belongs to. */
|
|
19
|
+
entityId: string;
|
|
20
|
+
/** SHA-256 hex digest of the composite fingerprint vector. */
|
|
21
|
+
hash: string;
|
|
22
|
+
/** Top-K singular values (flattened across sampled layers). */
|
|
23
|
+
singularValues: number[];
|
|
24
|
+
/** Optional per-layer activation statistics. */
|
|
25
|
+
activationStats?: {
|
|
26
|
+
mean: number;
|
|
27
|
+
stddev: number;
|
|
28
|
+
kurtosis: number;
|
|
29
|
+
skewness: number;
|
|
30
|
+
}[];
|
|
31
|
+
/** When the fingerprint was computed. */
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
/** Arbitrary metadata (model version, run ID, etc.). */
|
|
34
|
+
metadata?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Persistence interface for ParameSphere fingerprints and baselines.
|
|
38
|
+
*
|
|
39
|
+
* Implementations must be async-safe. The engine calls these methods
|
|
40
|
+
* fire-and-forget for saves and awaits on reads only when needed (e.g.
|
|
41
|
+
* loading a baseline on the first `checkDrift` call).
|
|
42
|
+
*/
|
|
43
|
+
export interface IFingerprintStore {
|
|
44
|
+
/** Append a fingerprint to the entity's history. */
|
|
45
|
+
saveFingerprint(entityId: string, fingerprint: StoredFingerprint): Promise<void>;
|
|
46
|
+
/** Return the most recently saved fingerprint for an entity, or undefined. */
|
|
47
|
+
getLatestFingerprint(entityId: string): Promise<StoredFingerprint | undefined>;
|
|
48
|
+
/** Return the baseline fingerprint for an entity, or undefined. */
|
|
49
|
+
getBaseline(entityId: string): Promise<StoredFingerprint | undefined>;
|
|
50
|
+
/** Set (or overwrite) the baseline fingerprint for an entity. */
|
|
51
|
+
setBaseline(entityId: string, fingerprint: StoredFingerprint): Promise<void>;
|
|
52
|
+
/** Return the last `limit` fingerprints for an entity, newest first. */
|
|
53
|
+
getHistory(entityId: string, limit?: number): Promise<StoredFingerprint[]>;
|
|
54
|
+
/** Remove all fingerprints and baseline for an entity. */
|
|
55
|
+
deleteEntity(entityId: string): Promise<void>;
|
|
56
|
+
/** List all entity IDs that have at least one stored fingerprint. */
|
|
57
|
+
listEntities(): Promise<string[]>;
|
|
58
|
+
}
|
|
59
|
+
/** Options for the in-memory store. */
|
|
60
|
+
export interface InMemoryStoreOptions {
|
|
61
|
+
/** Maximum fingerprints to retain per entity (default: 100). */
|
|
62
|
+
maxHistoryPerEntity?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* In-memory implementation of `IFingerprintStore`.
|
|
66
|
+
*
|
|
67
|
+
* Suitable for development, testing, and short-lived server processes.
|
|
68
|
+
* Data does **not** survive a process restart — which is the exact
|
|
69
|
+
* behaviour this layer is designed to replace when a persistent backend
|
|
70
|
+
* is plugged in.
|
|
71
|
+
*/
|
|
72
|
+
export declare class InMemoryFingerprintStore implements IFingerprintStore {
|
|
73
|
+
private readonly maxHistory;
|
|
74
|
+
private readonly history;
|
|
75
|
+
private readonly baselines;
|
|
76
|
+
constructor(options?: InMemoryStoreOptions);
|
|
77
|
+
saveFingerprint(entityId: string, fingerprint: StoredFingerprint): Promise<void>;
|
|
78
|
+
getLatestFingerprint(entityId: string): Promise<StoredFingerprint | undefined>;
|
|
79
|
+
getBaseline(entityId: string): Promise<StoredFingerprint | undefined>;
|
|
80
|
+
setBaseline(entityId: string, fingerprint: StoredFingerprint): Promise<void>;
|
|
81
|
+
getHistory(entityId: string, limit?: number): Promise<StoredFingerprint[]>;
|
|
82
|
+
deleteEntity(entityId: string): Promise<void>;
|
|
83
|
+
listEntities(): Promise<string[]>;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=fingerprint-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint-store.d.ts","sourceRoot":"","sources":["../../src/paramesphere/fingerprint-store.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAMH;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzF,yCAAyC;IACzC,SAAS,EAAE,IAAI,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAMD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF,8EAA8E;IAC9E,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAE/E,mEAAmE;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAEtE,iEAAiE;IACjE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7E,wEAAwE;IACxE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE3E,0DAA0D;IAC1D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,qEAAqE;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACnC;AAMD,uCAAuC;AACvC,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;gBAEtD,OAAO,CAAC,EAAE,oBAAoB;IAIpC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAahF,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAM9E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAIrE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAW1E,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAUxC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2024-2026 Vorion LLC
|
|
3
|
+
/**
|
|
4
|
+
* In-memory implementation of `IFingerprintStore`.
|
|
5
|
+
*
|
|
6
|
+
* Suitable for development, testing, and short-lived server processes.
|
|
7
|
+
* Data does **not** survive a process restart — which is the exact
|
|
8
|
+
* behaviour this layer is designed to replace when a persistent backend
|
|
9
|
+
* is plugged in.
|
|
10
|
+
*/
|
|
11
|
+
export class InMemoryFingerprintStore {
|
|
12
|
+
maxHistory;
|
|
13
|
+
history = new Map();
|
|
14
|
+
baselines = new Map();
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.maxHistory = options?.maxHistoryPerEntity ?? 100;
|
|
17
|
+
}
|
|
18
|
+
async saveFingerprint(entityId, fingerprint) {
|
|
19
|
+
let list = this.history.get(entityId);
|
|
20
|
+
if (!list) {
|
|
21
|
+
list = [];
|
|
22
|
+
this.history.set(entityId, list);
|
|
23
|
+
}
|
|
24
|
+
list.push(fingerprint);
|
|
25
|
+
// Trim oldest entries if over capacity
|
|
26
|
+
while (list.length > this.maxHistory) {
|
|
27
|
+
list.shift();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async getLatestFingerprint(entityId) {
|
|
31
|
+
const list = this.history.get(entityId);
|
|
32
|
+
if (!list || list.length === 0)
|
|
33
|
+
return undefined;
|
|
34
|
+
return list[list.length - 1];
|
|
35
|
+
}
|
|
36
|
+
async getBaseline(entityId) {
|
|
37
|
+
return this.baselines.get(entityId);
|
|
38
|
+
}
|
|
39
|
+
async setBaseline(entityId, fingerprint) {
|
|
40
|
+
this.baselines.set(entityId, fingerprint);
|
|
41
|
+
}
|
|
42
|
+
async getHistory(entityId, limit) {
|
|
43
|
+
const list = this.history.get(entityId);
|
|
44
|
+
if (!list || list.length === 0)
|
|
45
|
+
return [];
|
|
46
|
+
// Return newest first
|
|
47
|
+
const reversed = [...list].reverse();
|
|
48
|
+
if (limit !== undefined && limit > 0) {
|
|
49
|
+
return reversed.slice(0, limit);
|
|
50
|
+
}
|
|
51
|
+
return reversed;
|
|
52
|
+
}
|
|
53
|
+
async deleteEntity(entityId) {
|
|
54
|
+
this.history.delete(entityId);
|
|
55
|
+
this.baselines.delete(entityId);
|
|
56
|
+
}
|
|
57
|
+
async listEntities() {
|
|
58
|
+
const entities = new Set();
|
|
59
|
+
for (const key of this.history.keys()) {
|
|
60
|
+
entities.add(key);
|
|
61
|
+
}
|
|
62
|
+
for (const key of this.baselines.keys()) {
|
|
63
|
+
entities.add(key);
|
|
64
|
+
}
|
|
65
|
+
return Array.from(entities);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=fingerprint-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint-store.js","sourceRoot":"","sources":["../../src/paramesphere/fingerprint-store.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAkFjC;;;;;;;GAOG;AACH,MAAM,OAAO,wBAAwB;IAClB,UAAU,CAAS;IACnB,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACjD,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;IAElE,YAAY,OAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,mBAAmB,IAAI,GAAG,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,WAA8B;QACpE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvB,uCAAuC;QACvC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,WAA8B;QAChE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,KAAc;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,sBAAsB;QACtB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ParameSphere — SVD-Based Model Fingerprinting & Cognitive Envelope
|
|
3
|
+
*
|
|
4
|
+
* Production implementation of the patent-specified ParameSphere engine
|
|
5
|
+
* for detecting model weight drift and cognitive boundary breaches in
|
|
6
|
+
* AI agent deployments.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
export { ParameSphereEngine } from './paramesphere-engine.js';
|
|
11
|
+
export { CognitiveEnvelope } from './cognitive-envelope.js';
|
|
12
|
+
export { FingerprintMonitor } from './fingerprint-monitor.js';
|
|
13
|
+
export { ActivationCollector } from './activation-collector.js';
|
|
14
|
+
export { InMemoryFingerprintStore } from './fingerprint-store.js';
|
|
15
|
+
export { connectMonitorToTrustEngine, disconnectMonitor } from './monitor-integration.js';
|
|
16
|
+
export type { MonitorIntegrationConfig } from './monitor-integration.js';
|
|
17
|
+
export type { ActivationCollectorConfig } from './activation-collector.js';
|
|
18
|
+
export type { FingerprintMonitorConfig, MonitorCheckResult, MonitorStatus, TrustSignalPayload, } from './fingerprint-monitor.js';
|
|
19
|
+
export type { IFingerprintStore, StoredFingerprint, InMemoryStoreOptions, } from './fingerprint-store.js';
|
|
20
|
+
export type { ParameSphereConfig, ParameSphereFingerprint, ActivationStats, FingerprintComparison, DriftResult, EnvelopeConfig, BreachResult, EnvelopeState, DimensionBound, } from './types.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/paramesphere/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2024-2026 Vorion LLC
|
|
3
|
+
/**
|
|
4
|
+
* ParameSphere — SVD-Based Model Fingerprinting & Cognitive Envelope
|
|
5
|
+
*
|
|
6
|
+
* Production implementation of the patent-specified ParameSphere engine
|
|
7
|
+
* for detecting model weight drift and cognitive boundary breaches in
|
|
8
|
+
* AI agent deployments.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
export { ParameSphereEngine } from './paramesphere-engine.js';
|
|
13
|
+
export { CognitiveEnvelope } from './cognitive-envelope.js';
|
|
14
|
+
export { FingerprintMonitor } from './fingerprint-monitor.js';
|
|
15
|
+
export { ActivationCollector } from './activation-collector.js';
|
|
16
|
+
export { InMemoryFingerprintStore } from './fingerprint-store.js';
|
|
17
|
+
export { connectMonitorToTrustEngine, disconnectMonitor } from './monitor-integration.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/paramesphere/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monitor Integration — Connects FingerprintMonitor to TrustEngine.
|
|
3
|
+
*
|
|
4
|
+
* Thin adapter that wires drift / tampering detection callbacks to
|
|
5
|
+
* `TrustEngine.recordSignal()`, converting `TrustSignalPayload` objects
|
|
6
|
+
* into proper `TrustSignal` records.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import type { FingerprintMonitor } from './fingerprint-monitor.js';
|
|
11
|
+
import type { TrustEngine } from '../trust-engine/index.js';
|
|
12
|
+
/** Configuration for the monitor-to-engine integration. */
|
|
13
|
+
export interface MonitorIntegrationConfig {
|
|
14
|
+
/** Value recorded for drift signals (0 = maximum negative, 1 = positive). Default: 0.3 (mild negative). */
|
|
15
|
+
driftSignalWeight?: number;
|
|
16
|
+
/** Value recorded for tampering signals. Default: 0.0 (severe negative). */
|
|
17
|
+
tamperingSignalWeight?: number;
|
|
18
|
+
/** Source string attached to recorded signals. Default: 'paramesphere'. */
|
|
19
|
+
signalSource?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Wire a FingerprintMonitor's drift / tampering callbacks to a TrustEngine.
|
|
23
|
+
*
|
|
24
|
+
* After calling this function every drift or tampering detection will
|
|
25
|
+
* automatically record a trust signal via `engine.recordSignal()`.
|
|
26
|
+
*
|
|
27
|
+
* Call {@link disconnectMonitor} to remove the wiring.
|
|
28
|
+
*/
|
|
29
|
+
export declare function connectMonitorToTrustEngine(monitor: FingerprintMonitor, engine: TrustEngine, config?: MonitorIntegrationConfig): void;
|
|
30
|
+
/**
|
|
31
|
+
* Remove trust-engine wiring from a FingerprintMonitor.
|
|
32
|
+
*
|
|
33
|
+
* Clears the `onDriftDetected` and `onTamperingDetected` callbacks so that
|
|
34
|
+
* subsequent detections no longer record trust signals.
|
|
35
|
+
*/
|
|
36
|
+
export declare function disconnectMonitor(monitor: FingerprintMonitor): void;
|
|
37
|
+
//# sourceMappingURL=monitor-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor-integration.d.ts","sourceRoot":"","sources":["../../src/paramesphere/monitor-integration.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAsB,MAAM,0BAA0B,CAAC;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM5D,2DAA2D;AAC3D,MAAM,WAAW,wBAAwB;IACvC,2GAA2G;IAC3G,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,wBAAwB,GAChC,IAAI,CAkCN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAMnE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2024-2026 Vorion LLC
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Defaults
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const DEFAULT_DRIFT_WEIGHT = 0.3;
|
|
7
|
+
const DEFAULT_TAMPERING_WEIGHT = 0.0;
|
|
8
|
+
const DEFAULT_SIGNAL_SOURCE = 'paramesphere';
|
|
9
|
+
const connections = new WeakMap();
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Public API
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/**
|
|
14
|
+
* Wire a FingerprintMonitor's drift / tampering callbacks to a TrustEngine.
|
|
15
|
+
*
|
|
16
|
+
* After calling this function every drift or tampering detection will
|
|
17
|
+
* automatically record a trust signal via `engine.recordSignal()`.
|
|
18
|
+
*
|
|
19
|
+
* Call {@link disconnectMonitor} to remove the wiring.
|
|
20
|
+
*/
|
|
21
|
+
export function connectMonitorToTrustEngine(monitor, engine, config) {
|
|
22
|
+
const driftWeight = config?.driftSignalWeight ?? DEFAULT_DRIFT_WEIGHT;
|
|
23
|
+
const tamperingWeight = config?.tamperingSignalWeight ?? DEFAULT_TAMPERING_WEIGHT;
|
|
24
|
+
const source = config?.signalSource ?? DEFAULT_SIGNAL_SOURCE;
|
|
25
|
+
// Validate weights
|
|
26
|
+
if (driftWeight < 0 || driftWeight > 1) {
|
|
27
|
+
throw new Error('driftSignalWeight must be between 0 and 1');
|
|
28
|
+
}
|
|
29
|
+
if (tamperingWeight < 0 || tamperingWeight > 1) {
|
|
30
|
+
throw new Error('tamperingSignalWeight must be between 0 and 1');
|
|
31
|
+
}
|
|
32
|
+
// If already connected, disconnect first to avoid stacking callbacks
|
|
33
|
+
if (connections.has(monitor)) {
|
|
34
|
+
disconnectMonitor(monitor);
|
|
35
|
+
}
|
|
36
|
+
// Save state for later disconnection (no previous callbacks to restore
|
|
37
|
+
// since we don't have access to read private fields — we just clear on disconnect)
|
|
38
|
+
const state = {};
|
|
39
|
+
connections.set(monitor, state);
|
|
40
|
+
// Wire drift callback
|
|
41
|
+
monitor.setOnDriftDetected((entityId, result) => {
|
|
42
|
+
const signal = buildSignal(entityId, 'ANOMALY_DETECTED', driftWeight, source, result);
|
|
43
|
+
void engine.recordSignal(signal);
|
|
44
|
+
});
|
|
45
|
+
// Wire tampering callback
|
|
46
|
+
monitor.setOnTamperingDetected((entityId, result) => {
|
|
47
|
+
const signal = buildSignal(entityId, 'TAMPERING_DETECTED', tamperingWeight, source, result);
|
|
48
|
+
void engine.recordSignal(signal);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Remove trust-engine wiring from a FingerprintMonitor.
|
|
53
|
+
*
|
|
54
|
+
* Clears the `onDriftDetected` and `onTamperingDetected` callbacks so that
|
|
55
|
+
* subsequent detections no longer record trust signals.
|
|
56
|
+
*/
|
|
57
|
+
export function disconnectMonitor(monitor) {
|
|
58
|
+
if (!connections.has(monitor))
|
|
59
|
+
return;
|
|
60
|
+
monitor.setOnDriftDetected(undefined);
|
|
61
|
+
monitor.setOnTamperingDetected(undefined);
|
|
62
|
+
connections.delete(monitor);
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Internal helpers
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
function buildSignal(entityId, type, value, source, result) {
|
|
68
|
+
return {
|
|
69
|
+
id: `${source}-${type.toLowerCase()}-${entityId}-${Date.now()}`,
|
|
70
|
+
entityId,
|
|
71
|
+
type,
|
|
72
|
+
value,
|
|
73
|
+
source,
|
|
74
|
+
timestamp: new Date().toISOString(),
|
|
75
|
+
metadata: {
|
|
76
|
+
cosineDistance: result.cosineDistance,
|
|
77
|
+
maxSingularValueDelta: result.maxSingularValueDelta,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=monitor-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor-integration.js","sourceRoot":"","sources":["../../src/paramesphere/monitor-integration.ts"],"names":[],"mappings":"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"}
|