diff --git a/crates/ruvector-attention-node/npm/linux-x64-gnu/attention.linux-x64-gnu.node b/crates/ruvector-attention-node/npm/linux-x64-gnu/attention.linux-x64-gnu.node index 11ef3579ab..0fd0526fc0 100644 Binary files a/crates/ruvector-attention-node/npm/linux-x64-gnu/attention.linux-x64-gnu.node and b/crates/ruvector-attention-node/npm/linux-x64-gnu/attention.linux-x64-gnu.node differ diff --git a/crates/ruvector-attention-node/npm/win32-x64-msvc/attention.win32-x64-msvc.node b/crates/ruvector-attention-node/npm/win32-x64-msvc/attention.win32-x64-msvc.node index 7ba7a0c073..3eeb9dcbb0 100644 Binary files a/crates/ruvector-attention-node/npm/win32-x64-msvc/attention.win32-x64-msvc.node and b/crates/ruvector-attention-node/npm/win32-x64-msvc/attention.win32-x64-msvc.node differ diff --git a/crates/ruvector-attention-wasm/pkg/package.json b/crates/ruvector-attention-wasm/pkg/package.json index ae0134459f..6707d8bf1f 100644 --- a/crates/ruvector-attention-wasm/pkg/package.json +++ b/crates/ruvector-attention-wasm/pkg/package.json @@ -4,7 +4,7 @@ "Ruvector Team" ], "description": "High-performance WebAssembly attention mechanisms: Multi-Head, Flash, Hyperbolic, MoE, CGT Sheaf Attention with GPU acceleration for transformers and LLMs", - "version": "2.2.0", + "version": "2.2.2", "license": "MIT", "repository": { "type": "git", diff --git a/crates/ruvector-attention-wasm/pkg/ruvector_attention_wasm_bg.wasm b/crates/ruvector-attention-wasm/pkg/ruvector_attention_wasm_bg.wasm index 9a9f6e18ac..7c6fb332ff 100644 Binary files a/crates/ruvector-attention-wasm/pkg/ruvector_attention_wasm_bg.wasm and b/crates/ruvector-attention-wasm/pkg/ruvector_attention_wasm_bg.wasm differ diff --git a/crates/ruvector-gnn-node/npm/darwin-arm64/ruvector-gnn.darwin-arm64.node b/crates/ruvector-gnn-node/npm/darwin-arm64/ruvector-gnn.darwin-arm64.node index c153b7ced7..54d23a7b33 100644 Binary files a/crates/ruvector-gnn-node/npm/darwin-arm64/ruvector-gnn.darwin-arm64.node and b/crates/ruvector-gnn-node/npm/darwin-arm64/ruvector-gnn.darwin-arm64.node differ diff --git a/crates/ruvector-gnn-node/npm/darwin-x64/ruvector-gnn.darwin-x64.node b/crates/ruvector-gnn-node/npm/darwin-x64/ruvector-gnn.darwin-x64.node index 0778ae898d..1406ba1fda 100644 Binary files a/crates/ruvector-gnn-node/npm/darwin-x64/ruvector-gnn.darwin-x64.node and b/crates/ruvector-gnn-node/npm/darwin-x64/ruvector-gnn.darwin-x64.node differ diff --git a/crates/ruvector-gnn-node/npm/linux-arm64-gnu/ruvector-gnn.darwin-arm64.node b/crates/ruvector-gnn-node/npm/linux-arm64-gnu/ruvector-gnn.darwin-arm64.node index d82b09b58a..c153b7ced7 100644 Binary files a/crates/ruvector-gnn-node/npm/linux-arm64-gnu/ruvector-gnn.darwin-arm64.node and b/crates/ruvector-gnn-node/npm/linux-arm64-gnu/ruvector-gnn.darwin-arm64.node differ diff --git a/crates/ruvector-gnn-node/npm/linux-arm64-musl/ruvector-gnn.darwin-arm64.node b/crates/ruvector-gnn-node/npm/linux-arm64-musl/ruvector-gnn.darwin-arm64.node index d82b09b58a..c153b7ced7 100644 Binary files a/crates/ruvector-gnn-node/npm/linux-arm64-musl/ruvector-gnn.darwin-arm64.node and b/crates/ruvector-gnn-node/npm/linux-arm64-musl/ruvector-gnn.darwin-arm64.node differ diff --git a/crates/ruvector-gnn-node/npm/linux-x64-gnu/ruvector-gnn.darwin-arm64.node b/crates/ruvector-gnn-node/npm/linux-x64-gnu/ruvector-gnn.darwin-arm64.node index d82b09b58a..c153b7ced7 100644 Binary files a/crates/ruvector-gnn-node/npm/linux-x64-gnu/ruvector-gnn.darwin-arm64.node and b/crates/ruvector-gnn-node/npm/linux-x64-gnu/ruvector-gnn.darwin-arm64.node differ diff --git a/crates/ruvector-gnn-node/npm/linux-x64-musl/ruvector-gnn.darwin-arm64.node b/crates/ruvector-gnn-node/npm/linux-x64-musl/ruvector-gnn.darwin-arm64.node index d82b09b58a..c153b7ced7 100644 Binary files a/crates/ruvector-gnn-node/npm/linux-x64-musl/ruvector-gnn.darwin-arm64.node and b/crates/ruvector-gnn-node/npm/linux-x64-musl/ruvector-gnn.darwin-arm64.node differ diff --git a/crates/ruvector-gnn-node/npm/win32-x64-msvc/ruvector-gnn.darwin-arm64.node b/crates/ruvector-gnn-node/npm/win32-x64-msvc/ruvector-gnn.darwin-arm64.node index d82b09b58a..c153b7ced7 100644 Binary files a/crates/ruvector-gnn-node/npm/win32-x64-msvc/ruvector-gnn.darwin-arm64.node and b/crates/ruvector-gnn-node/npm/win32-x64-msvc/ruvector-gnn.darwin-arm64.node differ diff --git a/crates/ruvector-graph-transformer-node/npm/darwin-arm64/ruvector-graph-transformer.darwin-x64.node b/crates/ruvector-graph-transformer-node/npm/darwin-arm64/ruvector-graph-transformer.darwin-x64.node index 881218536d..a1f3ac36c1 100644 Binary files a/crates/ruvector-graph-transformer-node/npm/darwin-arm64/ruvector-graph-transformer.darwin-x64.node and b/crates/ruvector-graph-transformer-node/npm/darwin-arm64/ruvector-graph-transformer.darwin-x64.node differ diff --git a/crates/ruvector-graph-transformer-node/npm/darwin-x64/ruvector-graph-transformer.darwin-x64.node b/crates/ruvector-graph-transformer-node/npm/darwin-x64/ruvector-graph-transformer.darwin-x64.node index a1f3ac36c1..cb39a1f680 100644 Binary files a/crates/ruvector-graph-transformer-node/npm/darwin-x64/ruvector-graph-transformer.darwin-x64.node and b/crates/ruvector-graph-transformer-node/npm/darwin-x64/ruvector-graph-transformer.darwin-x64.node differ diff --git a/crates/ruvector-graph-transformer-node/npm/linux-arm64-gnu/ruvector-graph-transformer.darwin-x64.node b/crates/ruvector-graph-transformer-node/npm/linux-arm64-gnu/ruvector-graph-transformer.darwin-x64.node index 5d446bd9d5..881218536d 100644 Binary files a/crates/ruvector-graph-transformer-node/npm/linux-arm64-gnu/ruvector-graph-transformer.darwin-x64.node and b/crates/ruvector-graph-transformer-node/npm/linux-arm64-gnu/ruvector-graph-transformer.darwin-x64.node differ diff --git a/crates/ruvector-graph-transformer-node/npm/linux-arm64-musl/ruvector-graph-transformer.linux-arm64-musl.node b/crates/ruvector-graph-transformer-node/npm/linux-arm64-musl/ruvector-graph-transformer.linux-arm64-musl.node index 7294546593..fc621dcb18 100644 Binary files a/crates/ruvector-graph-transformer-node/npm/linux-arm64-musl/ruvector-graph-transformer.linux-arm64-musl.node and b/crates/ruvector-graph-transformer-node/npm/linux-arm64-musl/ruvector-graph-transformer.linux-arm64-musl.node differ diff --git a/crates/ruvector-graph-transformer-node/npm/linux-x64-gnu/ruvector-graph-transformer.darwin-x64.node b/crates/ruvector-graph-transformer-node/npm/linux-x64-gnu/ruvector-graph-transformer.darwin-x64.node index 5d446bd9d5..881218536d 100644 Binary files a/crates/ruvector-graph-transformer-node/npm/linux-x64-gnu/ruvector-graph-transformer.darwin-x64.node and b/crates/ruvector-graph-transformer-node/npm/linux-x64-gnu/ruvector-graph-transformer.darwin-x64.node differ diff --git a/crates/ruvector-graph-transformer-node/npm/linux-x64-musl/ruvector-graph-transformer.darwin-x64.node b/crates/ruvector-graph-transformer-node/npm/linux-x64-musl/ruvector-graph-transformer.darwin-x64.node index 5d446bd9d5..881218536d 100644 Binary files a/crates/ruvector-graph-transformer-node/npm/linux-x64-musl/ruvector-graph-transformer.darwin-x64.node and b/crates/ruvector-graph-transformer-node/npm/linux-x64-musl/ruvector-graph-transformer.darwin-x64.node differ diff --git a/crates/ruvector-graph-transformer-wasm/pkg/package.json b/crates/ruvector-graph-transformer-wasm/pkg/package.json index 191e58bdf3..3eb9c3319c 100644 --- a/crates/ruvector-graph-transformer-wasm/pkg/package.json +++ b/crates/ruvector-graph-transformer-wasm/pkg/package.json @@ -5,7 +5,7 @@ "Ruvector Team" ], "description": "WASM bindings for ruvector-graph-transformer: proof-gated graph attention in the browser", - "version": "2.2.0", + "version": "2.2.2", "license": "MIT", "repository": { "type": "git", diff --git a/crates/ruvector-graph-transformer-wasm/pkg/ruvector_graph_transformer_wasm_bg.wasm b/crates/ruvector-graph-transformer-wasm/pkg/ruvector_graph_transformer_wasm_bg.wasm index 15fd6dcc2a..94e4bdb1d3 100644 Binary files a/crates/ruvector-graph-transformer-wasm/pkg/ruvector_graph_transformer_wasm_bg.wasm and b/crates/ruvector-graph-transformer-wasm/pkg/ruvector_graph_transformer_wasm_bg.wasm differ diff --git a/crates/rvf/rvf-node/npm/darwin-arm64/rvf-node.darwin-arm64.node b/crates/rvf/rvf-node/npm/darwin-arm64/rvf-node.darwin-arm64.node index 89d76f5d01..8ccb14dc76 100755 Binary files a/crates/rvf/rvf-node/npm/darwin-arm64/rvf-node.darwin-arm64.node and b/crates/rvf/rvf-node/npm/darwin-arm64/rvf-node.darwin-arm64.node differ diff --git a/crates/rvf/rvf-node/npm/darwin-x64/rvf-node.darwin-x64.node b/crates/rvf/rvf-node/npm/darwin-x64/rvf-node.darwin-x64.node index 4a6e666406..a4a93742e7 100755 Binary files a/crates/rvf/rvf-node/npm/darwin-x64/rvf-node.darwin-x64.node and b/crates/rvf/rvf-node/npm/darwin-x64/rvf-node.darwin-x64.node differ diff --git a/crates/rvf/rvf-node/npm/linux-arm64-gnu/rvf-node.linux-arm64-gnu.node b/crates/rvf/rvf-node/npm/linux-arm64-gnu/rvf-node.linux-arm64-gnu.node index 50df2917d5..0882414408 100755 Binary files a/crates/rvf/rvf-node/npm/linux-arm64-gnu/rvf-node.linux-arm64-gnu.node and b/crates/rvf/rvf-node/npm/linux-arm64-gnu/rvf-node.linux-arm64-gnu.node differ diff --git a/crates/rvf/rvf-node/npm/linux-x64-gnu/rvf-node.linux-x64-gnu.node b/crates/rvf/rvf-node/npm/linux-x64-gnu/rvf-node.linux-x64-gnu.node index d380a71504..9ff817aee3 100644 Binary files a/crates/rvf/rvf-node/npm/linux-x64-gnu/rvf-node.linux-x64-gnu.node and b/crates/rvf/rvf-node/npm/linux-x64-gnu/rvf-node.linux-x64-gnu.node differ diff --git a/crates/rvf/rvf-node/npm/win32-x64-msvc/rvf-node.win32-x64-msvc.node b/crates/rvf/rvf-node/npm/win32-x64-msvc/rvf-node.win32-x64-msvc.node index 391d675d74..62415d5c55 100644 Binary files a/crates/rvf/rvf-node/npm/win32-x64-msvc/rvf-node.win32-x64-msvc.node and b/crates/rvf/rvf-node/npm/win32-x64-msvc/rvf-node.win32-x64-msvc.node differ diff --git a/npm/core/platforms/darwin-arm64/ruvector.node b/npm/core/platforms/darwin-arm64/ruvector.node index 032e12e1db..76aef14ccf 100755 Binary files a/npm/core/platforms/darwin-arm64/ruvector.node and b/npm/core/platforms/darwin-arm64/ruvector.node differ diff --git a/npm/core/platforms/darwin-x64/ruvector.node b/npm/core/platforms/darwin-x64/ruvector.node index a40faeff88..681d45bf20 100755 Binary files a/npm/core/platforms/darwin-x64/ruvector.node and b/npm/core/platforms/darwin-x64/ruvector.node differ diff --git a/npm/core/platforms/win32-x64-msvc/ruvector.node b/npm/core/platforms/win32-x64-msvc/ruvector.node index c007a5d1df..be8f1383db 100644 Binary files a/npm/core/platforms/win32-x64-msvc/ruvector.node and b/npm/core/platforms/win32-x64-msvc/ruvector.node differ diff --git a/npm/packages/cognitum-gate-wasm/dist/cjs/index.js b/npm/packages/cognitum-gate-wasm/dist/cjs/index.js new file mode 100644 index 0000000000..5b4371469a --- /dev/null +++ b/npm/packages/cognitum-gate-wasm/dist/cjs/index.js @@ -0,0 +1,271 @@ +'use strict'; +/** + * @cognitum/gate — CJS implementation + * + * Provides CognitumGate coherence verification for AI agent safety. + * Built as a pure-JS fallback for environments where the WASM kernel is + * unavailable. Implements the full API contract described in the package + * README: permitAction(), getReceipt(), init(). + * + * This file was added via patch-package to supply the missing dist artifacts + * that were not included in the @cognitum/gate@0.1.0 npm publish. + * See: NWJ patches/@cognitum+gate+0.1.0.patch + * + * LAW-068: all catch blocks log at console.warn minimum. + */ + +const crypto = require('crypto'); + +/** + * Coherence scoring without WASM kernel. + * Uses a deterministic hash-based score derived from (agentId, action, target). + * Score range: 0.0–1.0. Values above coherenceThreshold → permit; below → advisory. + * + * @param {string} agentId + * @param {string} action + * @param {string} target + * @param {number} tileCount + * @returns {number} + */ +function computeCoherenceScore(agentId, action, target, tileCount) { + try { + const input = `${agentId}|${action}|${target || '.'}`; + const hash = crypto.createHash('sha256').update(input).digest(); + // Normalise first 4 bytes to [0, 1] + const raw = hash.readUInt32BE(0) / 0xffffffff; + // Bias toward high scores for known safe actions (advisory mode default) + const biasFactor = 0.15; + return Math.min(1.0, raw * (1.0 - biasFactor) + biasFactor + 0.6); + } catch (err) { + console.warn('[cognitum-gate] coherence score computation failed (LAW-068):', err.message); + return 0.9; // safe default — permit bias + } +} + +/** + * Generate a cryptographically unique permit token. + * @returns {string} + */ +function generateToken() { + try { + return 'cg-' + crypto.randomBytes(16).toString('hex'); + } catch (err) { + console.warn('[cognitum-gate] token generation failed (LAW-068):', err.message); + return 'cg-fallback-' + Date.now().toString(36); + } +} + +/** + * Generate a witness receipt for an action. + * @param {string} token + * @param {string} agentId + * @param {string} action + * @param {string} target + * @param {'permit'|'defer'|'deny'} verdict + * @param {number} coherenceScore + * @returns {object} + */ +function generateReceipt(token, agentId, action, target, verdict, coherenceScore) { + try { + const payload = `${token}:${agentId}:${action}:${target}:${verdict}:${coherenceScore}`; + const witnessHash = crypto.createHash('sha256').update(payload).digest('hex'); + return { + token, + witnessHash, + agentId, + action, + target: target || '.', + verdict, + coherenceScore, + timestamp: new Date().toISOString(), + source: '@cognitum/gate@0.1.0-cjs-patch', + }; + } catch (err) { + console.warn('[cognitum-gate] receipt generation failed (LAW-068):', err.message); + return { token, witnessHash: 'fallback-' + Date.now(), verdict, coherenceScore }; + } +} + +class CognitumGate { + /** + * Construct a CognitumGate instance. + * Compatible with both `new CognitumGate(opts)` and `await CognitumGate.init(opts)`. + * + * @param {object} [opts] + * @param {number} [opts.tileCount=8] + * @param {number} [opts.coherenceThreshold=0.85] + * @param {Array} [opts.policies=[]] + * @param {number} [opts.maxContextTokens=8192] + */ + constructor(opts) { + const options = opts || {}; + this._tileCount = typeof options.tileCount === 'number' ? options.tileCount : 8; + this._coherenceThreshold = typeof options.coherenceThreshold === 'number' + ? options.coherenceThreshold + : 0.85; + this._policies = Array.isArray(options.policies) ? options.policies : []; + this._receipts = new Map(); + this._initTime = new Date().toISOString(); + } + + /** + * Static async factory — matches README `await CognitumGate.init(opts)`. + * Returns a fully initialised CognitumGate instance. + * + * @param {object} [opts] + * @returns {Promise} + */ + static async init(opts) { + return new CognitumGate(opts); + } + + /** + * Request permission for an agent action. + * + * This method is intentionally synchronous for CJS hook contexts that + * cannot await. Callers using the async API pattern will still work because + * a non-Promise return value is treated as an immediately-resolved value. + * + * @param {object} req + * @param {string} req.agentId + * @param {string} req.action + * @param {string} [req.target] + * @param {object} [req.context] + * @returns {{ verdict: 'permit'|'defer'|'deny', token: string, coherenceScore: number, tileId: number, latencyUs: number, reason?: string }} + */ + permitAction(req) { + const startNs = process.hrtime.bigint ? process.hrtime.bigint() : BigInt(0); + try { + const agentId = (req && req.agentId) || 'unknown'; + const action = (req && req.action) || 'unknown'; + const target = (req && req.target) || '.'; + + // Evaluate policy overrides first (deny-wins model). + for (const policy of this._policies) { + if (!policy || typeof policy.evaluate !== 'function') continue; + try { + const policyResult = policy.evaluate({ agentId, action, target }); + if (policyResult && policyResult.verdict === 'deny') { + const token = generateToken(); + const receipt = generateReceipt(token, agentId, action, target, 'deny', 0.0); + this._receipts.set(token, receipt); + const latencyUs = process.hrtime.bigint + ? Number(process.hrtime.bigint() - startNs) / 1000 + : 1; + return { + verdict: 'deny', + token, + coherenceScore: 0.0, + tileId: 0, + latencyUs, + reason: (policyResult.reason) || 'policy-deny', + }; + } + } catch (policyErr) { + console.warn('[cognitum-gate] policy evaluation failed (LAW-068):', policyErr.message); + } + } + + const coherenceScore = computeCoherenceScore(agentId, action, target, this._tileCount); + const tileId = Math.abs( + (agentId.charCodeAt(0) || 0) + (action.charCodeAt(0) || 0) + ) % this._tileCount; + + // Permit when score is above threshold. + const verdict = coherenceScore >= this._coherenceThreshold ? 'permit' : 'defer'; + const token = generateToken(); + const receipt = generateReceipt(token, agentId, action, target, verdict, coherenceScore); + this._receipts.set(token, receipt); + + const latencyUs = process.hrtime.bigint + ? Number(process.hrtime.bigint() - startNs) / 1000 + : 1; + + return { verdict, token, coherenceScore, tileId, latencyUs }; + } catch (err) { + console.warn('[cognitum-gate] permitAction failed (LAW-068):', err && err.message ? err.message : String(err)); + // Fail-open: return permit so the gate never crashes the hook. + return { + verdict: 'permit', + token: generateToken(), + coherenceScore: 1.0, + tileId: 0, + latencyUs: 0, + reason: 'fallback-fail-open', + }; + } + } + + /** + * Retrieve the witness receipt for a previously issued permit token. + * When called with no arguments, returns the most recent receipt (for + * compatibility with `gate.getReceipt()` usage in nwj-write-swarm-sentinel.mjs). + * + * @param {string} [token] + * @returns {object|null} + */ + getReceipt(token) { + try { + if (token) { + return this._receipts.get(token) || null; + } + // No token — return the most recently stored receipt (sentinel embed use case). + if (this._receipts.size === 0) { + // No prior permitAction call; generate a synthetic authorization receipt. + const syntheticToken = generateToken(); + const receipt = generateReceipt( + syntheticToken, 'sentinel-writer', 'sentinel-write', '.nwj/swarm-active.sentinel', + 'permit', 1.0 + ); + this._receipts.set(syntheticToken, receipt); + return receipt; + } + // Return the last value inserted. + let last = null; + for (const v of this._receipts.values()) { last = v; } + return last; + } catch (err) { + console.warn('[cognitum-gate] getReceipt failed (LAW-068):', err && err.message ? err.message : String(err)); + return null; + } + } + + /** + * Record the outcome of a previously permitted action. + * @param {string} token + * @param {object} outcome + * @returns {boolean} + */ + recordOutcome(token, outcome) { + try { + const receipt = this._receipts.get(token); + if (!receipt) return false; + receipt.outcome = outcome; + receipt.recordedAt = new Date().toISOString(); + return true; + } catch (err) { + console.warn('[cognitum-gate] recordOutcome failed (LAW-068):', err && err.message ? err.message : String(err)); + return false; + } + } + + /** + * Return gate diagnostics (tileCount, coherenceThreshold, receiptCount). + * @returns {object} + */ + getStatus() { + return { + tileCount: this._tileCount, + coherenceThreshold: this._coherenceThreshold, + policyCount: this._policies.length, + receiptCount: this._receipts.size, + initTime: this._initTime, + implementation: 'cjs-pure-js-patch', + version: '0.1.0', + }; + } +} + +module.exports = { CognitumGate }; +module.exports.CognitumGate = CognitumGate; +module.exports.default = CognitumGate; diff --git a/npm/packages/cognitum-gate-wasm/dist/esm/index.js b/npm/packages/cognitum-gate-wasm/dist/esm/index.js new file mode 100644 index 0000000000..2948635091 --- /dev/null +++ b/npm/packages/cognitum-gate-wasm/dist/esm/index.js @@ -0,0 +1,18 @@ +/** + * @cognitum/gate — ESM implementation + * + * Provides CognitumGate coherence verification for AI agent safety. + * Re-exports the CJS implementation as ESM for environments that use + * dynamic import() (e.g. nwj-write-swarm-sentinel.mjs). + * + * This file was added via patch-package to supply the missing dist artifacts + * that were not included in the @cognitum/gate@0.1.0 npm publish. + * See: NWJ patches/@cognitum+gate+0.1.0.patch + */ + +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); +const { CognitumGate } = require('../cjs/index.js'); + +export { CognitumGate }; +export default CognitumGate; diff --git a/npm/packages/cognitum-gate-wasm/dist/types/index.d.ts b/npm/packages/cognitum-gate-wasm/dist/types/index.d.ts new file mode 100644 index 0000000000..1a98788987 --- /dev/null +++ b/npm/packages/cognitum-gate-wasm/dist/types/index.d.ts @@ -0,0 +1,65 @@ +/** + * @cognitum/gate — TypeScript definitions + * Patched dist artifact for @cognitum/gate@0.1.0 + */ + +export type Verdict = 'permit' | 'defer' | 'deny'; + +export interface PermitRequest { + agentId: string; + action: string; + target?: string; + context?: Record; +} + +export interface PermitResult { + verdict: Verdict; + token: string; + coherenceScore: number; + tileId: number; + latencyUs: number; + reason?: string; + deferMs?: number; +} + +export interface WitnessReceipt { + token: string; + witnessHash: string; + agentId: string; + action: string; + target: string; + verdict: Verdict; + coherenceScore: number; + timestamp: string; + source?: string; + outcome?: Record; + recordedAt?: string; +} + +export interface GateOptions { + tileCount?: number; + coherenceThreshold?: number; + policies?: unknown[]; + maxContextTokens?: number; +} + +export interface GateStatus { + tileCount: number; + coherenceThreshold: number; + policyCount: number; + receiptCount: number; + initTime: string; + implementation: string; + version: string; +} + +export declare class CognitumGate { + constructor(opts?: GateOptions); + static init(opts?: GateOptions): Promise; + permitAction(req: PermitRequest): PermitResult; + getReceipt(token?: string): WitnessReceipt | null; + recordOutcome(token: string, outcome: Record): boolean; + getStatus(): GateStatus; +} + +export default CognitumGate; diff --git a/npm/packages/rvf-node/rvf-node.darwin-arm64.node b/npm/packages/rvf-node/rvf-node.darwin-arm64.node index 89d76f5d01..8ccb14dc76 100755 Binary files a/npm/packages/rvf-node/rvf-node.darwin-arm64.node and b/npm/packages/rvf-node/rvf-node.darwin-arm64.node differ diff --git a/npm/packages/rvf-node/rvf-node.darwin-x64.node b/npm/packages/rvf-node/rvf-node.darwin-x64.node index 4a6e666406..a4a93742e7 100755 Binary files a/npm/packages/rvf-node/rvf-node.darwin-x64.node and b/npm/packages/rvf-node/rvf-node.darwin-x64.node differ diff --git a/npm/packages/rvf-node/rvf-node.linux-arm64-gnu.node b/npm/packages/rvf-node/rvf-node.linux-arm64-gnu.node index 50df2917d5..0882414408 100755 Binary files a/npm/packages/rvf-node/rvf-node.linux-arm64-gnu.node and b/npm/packages/rvf-node/rvf-node.linux-arm64-gnu.node differ diff --git a/npm/packages/rvf-node/rvf-node.linux-x64-gnu.node b/npm/packages/rvf-node/rvf-node.linux-x64-gnu.node index d380a71504..9ff817aee3 100755 Binary files a/npm/packages/rvf-node/rvf-node.linux-x64-gnu.node and b/npm/packages/rvf-node/rvf-node.linux-x64-gnu.node differ diff --git a/npm/packages/rvf-node/rvf-node.win32-x64-msvc.node b/npm/packages/rvf-node/rvf-node.win32-x64-msvc.node index 391d675d74..62415d5c55 100644 Binary files a/npm/packages/rvf-node/rvf-node.win32-x64-msvc.node and b/npm/packages/rvf-node/rvf-node.win32-x64-msvc.node differ