@rubric-protocol/sdk 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +178 -90
  2. package/dist/background-queue.d.ts +57 -0
  3. package/dist/background-queue.d.ts.map +1 -0
  4. package/dist/background-queue.js +164 -0
  5. package/dist/background-queue.js.map +1 -0
  6. package/dist/index.d.ts +14 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +25 -20
  9. package/dist/index.js.map +1 -1
  10. package/dist/ml-dsa-local.d.ts +35 -0
  11. package/dist/ml-dsa-local.d.ts.map +1 -0
  12. package/dist/ml-dsa-local.js +151 -0
  13. package/dist/ml-dsa-local.js.map +1 -0
  14. package/dist/plugins/langchain.d.ts +30 -0
  15. package/dist/plugins/langchain.d.ts.map +1 -0
  16. package/dist/plugins/langchain.js +85 -0
  17. package/dist/plugins/langchain.js.map +1 -0
  18. package/dist/plugins/openai-plugin.d.ts +23 -0
  19. package/dist/plugins/openai-plugin.d.ts.map +1 -0
  20. package/dist/plugins/openai-plugin.js +72 -0
  21. package/dist/plugins/openai-plugin.js.map +1 -0
  22. package/dist/proof-types.d.ts +48 -0
  23. package/dist/proof-types.d.ts.map +1 -0
  24. package/dist/proof-types.js +105 -0
  25. package/dist/proof-types.js.map +1 -0
  26. package/dist/proof-upgrade-manager.d.ts +24 -0
  27. package/dist/proof-upgrade-manager.d.ts.map +1 -0
  28. package/dist/proof-upgrade-manager.js +103 -0
  29. package/dist/proof-upgrade-manager.js.map +1 -0
  30. package/dist/rubric-client.d.ts +104 -0
  31. package/dist/rubric-client.d.ts.map +1 -0
  32. package/dist/rubric-client.js +243 -0
  33. package/dist/rubric-client.js.map +1 -0
  34. package/dist/signing.d.ts +35 -0
  35. package/dist/signing.d.ts.map +1 -0
  36. package/dist/signing.js +151 -0
  37. package/dist/signing.js.map +1 -0
  38. package/package.json +43 -12
  39. package/dist/cli.d.ts +0 -30
  40. package/dist/cli.d.ts.map +0 -1
  41. package/dist/cli.js +0 -165
  42. package/dist/cli.js.map +0 -1
  43. package/dist/client.d.ts +0 -379
  44. package/dist/client.d.ts.map +0 -1
  45. package/dist/client.js +0 -447
  46. package/dist/client.js.map +0 -1
  47. package/dist/types.d.ts +0 -296
  48. package/dist/types.d.ts.map +0 -1
  49. package/dist/types.js +0 -6
  50. package/dist/types.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Rubric Protocol — Local ML-DSA-65 Signing
3
+ * Uses @noble/post-quantum (NIST FIPS 204)
4
+ * Handles key generation, signing, verification, and filesystem persistence.
5
+ */
6
+ export interface LocalKeyPair {
7
+ publicKey: Uint8Array;
8
+ secretKey: Uint8Array;
9
+ publicKeyHex: string;
10
+ created: string;
11
+ }
12
+ export interface SignedPayload {
13
+ payload: Record<string, unknown>;
14
+ signature: string;
15
+ publicKey: string;
16
+ signedAt: string;
17
+ algorithm: 'ML-DSA-65';
18
+ }
19
+ /**
20
+ * Generate a fresh ML-DRA-65 keypair from a 32-byte random seed.
21
+ */
22
+ export declare function generateKeyPair(): LocalKeyPair;
23
+ /**
24
+ * Sign an arbitrary payload object with a local secret key.
25
+ * Canonical JSON serialization ensures deterministic signing.
26
+ */
27
+ export declare function signPayload(payload: Record<string, unknown>, secretKey: Uint8Array, publicKey: Uint8Array): SignedPayload;
28
+ /**
29
+ * Verify a signed payload locally (for testing / offline verification).
30
+ */
31
+ export declare function verifySignedPayload(signed: SignedPayload): boolean;
32
+ export declare function saveKeyPair(kp: LocalKeyPair, filePath: string, passphrase?: string): void;
33
+ export declare function loadKeyPair(filePath: string, passphrase?: string): LocalKeyPair;
34
+ export declare function loadOrCreateKeyPair(filePath: string, passphrase?: string): LocalKeyPair;
35
+ //# sourceMappingURL=ml-dsa-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ml-dsa-local.d.ts","sourceRoot":"","sources":["../ml-dsa-local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,WAAW,CAAC;CACxB;AAID;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAS9C;AAID;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,GACpB,aAAa,CAYf;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAUlE;AAcD,wBAAgB,WAAW,CACzB,EAAE,EAAE,YAAY,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAgBN;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAc/E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAKvF"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Rubric Protocol — Local ML-DSA-65 Signing
4
+ * Uses @noble/post-quantum (NIST FIPS 204)
5
+ * Handles key generation, signing, verification, and filesystem persistence.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.generateKeyPair = generateKeyPair;
42
+ exports.signPayload = signPayload;
43
+ exports.verifySignedPayload = verifySignedPayload;
44
+ exports.saveKeyPair = saveKeyPair;
45
+ exports.loadKeyPair = loadKeyPair;
46
+ exports.loadOrCreateKeyPair = loadOrCreateKeyPair;
47
+ const ml_dsa_js_1 = require("@noble/post-quantum/ml-dsa.js");
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const crypto = __importStar(require("crypto"));
51
+ // ─── Key Generation ──────────────────────────────────────────────────────────
52
+ /**
53
+ * Generate a fresh ML-DRA-65 keypair from a 32-byte random seed.
54
+ */
55
+ function generateKeyPair() {
56
+ const seed = crypto.randomBytes(32);
57
+ const kp = ml_dsa_js_1.ml_dsa65.keygen(seed);
58
+ return {
59
+ publicKey: kp.publicKey,
60
+ secretKey: kp.secretKey,
61
+ publicKeyHex: Buffer.from(kp.publicKey).toString('hex'),
62
+ created: new Date().toISOString(),
63
+ };
64
+ }
65
+ // ─── Sign ─────────────────────────────────────────────────────────────────────
66
+ /**
67
+ * Sign an arbitrary payload object with a local secret key.
68
+ * Canonical JSON serialization ensures deterministic signing.
69
+ */
70
+ function signPayload(payload, secretKey, publicKey) {
71
+ const canonical = canonicalJson(payload);
72
+ const msgBytes = new TextEncoder().encode(canonical);
73
+ const sig = ml_dsa_js_1.ml_dsa65.sign(msgBytes, secretKey);
74
+ return {
75
+ payload,
76
+ signature: Buffer.from(sig).toString('hex'),
77
+ publicKey: Buffer.from(publicKey).toString('hex'),
78
+ signedAt: new Date().toISOString(),
79
+ algorithm: 'ML-DSA-65',
80
+ };
81
+ }
82
+ // ─── Verify ───────────────────────────────────────────────────────────────────
83
+ /**
84
+ * Verify a signed payload locally (for testing / offline verification).
85
+ */
86
+ function verifySignedPayload(signed) {
87
+ try {
88
+ const canonical = canonicalJson(signed.payload);
89
+ const msgBytes = new TextEncoder().encode(canonical);
90
+ const sigBytes = Uint8Array.from(Buffer.from(signed.signature, 'hex'));
91
+ const pubKeyBytes = Uint8Array.from(Buffer.from(signed.publicKey, 'hex'));
92
+ return ml_dsa_js_1.ml_dsa65.verify(sigBytes, msgBytes, pubKeyBytes);
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ }
98
+ function saveKeyPair(kp, filePath, passphrase) {
99
+ let store;
100
+ if (passphrase) {
101
+ const key = crypto.scryptSync(passphrase, 'rubric-sdk-salt', 32);
102
+ const iv = crypto.randomBytes(12);
103
+ const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
104
+ const skHex = Buffer.from(kp.secretKey).toString('hex');
105
+ const encrypted = Buffer.concat([cipher.update(skHex, 'utf8'), cipher.final()]);
106
+ const authTag = cipher.getAuthTag();
107
+ store = { version: 1, algorithm: 'ML-DSA-65', publicKeyHex: kp.publicKeyHex, secretKeyHex: encrypted.toString('hex'), iv: iv.toString('hex'), authTag: authTag.toString('hex'), created: kp.created };
108
+ }
109
+ else {
110
+ store = { version: 1, algorithm: 'ML-DSA-65', publicKeyHex: kp.publicKeyHex, secretKeyHex: Buffer.from(kp.secretKey).toString('hex'), created: kp.created };
111
+ }
112
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
113
+ fs.writeFileSync(filePath, JSON.stringify(store, null, 2), { mode: 0o600 });
114
+ }
115
+ function loadKeyPair(filePath, passphrase) {
116
+ const raw = fs.readFileSync(filePath, 'utf8');
117
+ const store = JSON.parse(raw);
118
+ if (store.version !== 1 || store.algorithm !== 'ML-DSA-65')
119
+ throw new Error('Incompatible keystore format');
120
+ let skHex;
121
+ if (store.iv && store.authTag) {
122
+ if (!passphrase)
123
+ throw new Error('Keystore is encrypted passphrase required');
124
+ const key = crypto.scryptSync(passphrase, 'rubric-sdk-salt', 32);
125
+ const iv = Buffer.from(store.iv, 'hex');
126
+ const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
127
+ decipher.setAuthTag(Buffer.from(store.authTag, 'hex'));
128
+ skHex = decipher.update(store.secretKeyHex, 'hex', 'utf8') + decipher.final('utf8');
129
+ }
130
+ else {
131
+ skHex = store.secretKeyHex;
132
+ }
133
+ return { publicKey: Uint8Array.from(Buffer.from(store.publicKeyHex, 'hex')), secretKey: Uint8Array.from(Buffer.from(skHex, 'hex')), publicKeyHex: store.publicKeyHex, created: store.created };
134
+ }
135
+ function loadOrCreateKeyPair(filePath, passphrase) {
136
+ if (fs.existsSync(filePath))
137
+ return loadKeyPair(filePath, passphrase);
138
+ const kp = generateKeyPair();
139
+ saveKeyPair(kp, filePath, passphrase);
140
+ return kp;
141
+ }
142
+ function canonicalJson(obj) {
143
+ if (obj === null || typeof obj !== 'object')
144
+ return JSON.stringify(obj);
145
+ if (Array.isArray(obj))
146
+ return '[' + obj.map(canonicalJson).join(',') + ']';
147
+ const keys = Object.keys(obj).sort();
148
+ const pairs = keys.map(k => JSON.stringify(k) + ':' + canonicalJson(obj[k]));
149
+ return '{' + pairs.join(',') + '}';
150
+ }
151
+ //# sourceMappingURL=ml-dsa-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ml-dsa-local.js","sourceRoot":"","sources":["../ml-dsa-local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { RubricClientConfig } from '../rubric-client';
2
+ declare let BaseCallbackHandler: any;
3
+ type LLMResult = any;
4
+ type AgentAction = any;
5
+ type AgentFinish = any;
6
+ type ChainValues = any;
7
+ export interface RubricLangChainConfig extends RubricClientConfig {
8
+ events?: Array<'llm' | 'chain' | 'agent' | 'tool'>;
9
+ pipelineId?: string | ((runId: string) => string);
10
+ }
11
+ export declare class RubricLangChainHandler extends BaseCallbackHandler {
12
+ name: string;
13
+ private readonly client;
14
+ private readonly events;
15
+ private readonly pipelineId?;
16
+ constructor(config: RubricLangChainConfig);
17
+ handleLLMEnd(output: LLMResult, runId: string): Promise<void>;
18
+ handleLLMError(error: Error, runId: string): Promise<void>;
19
+ handleChainEnd(outputs: ChainValues, runId: string, parentRunId?: string): Promise<void>;
20
+ handleChainError(error: Error, runId: string): Promise<void>;
21
+ handleAgentAction(action: AgentAction, runId: string): Promise<void>;
22
+ handleAgentEnd(action: AgentFinish, runId: string): Promise<void>;
23
+ handleToolEnd(output: string, runId: string): Promise<void>;
24
+ handleToolError(error: Error, runId: string): Promise<void>;
25
+ private _attest;
26
+ private _pipeline;
27
+ shutdown(): Promise<void>;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=langchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../plugins/langchain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGpE,QAAA,IAAI,mBAAmB,EAAE,GAAG,CAAC;AAU7B,KAAK,SAAS,GAAG,GAAG,CAAC;AACrB,KAAK,WAAW,GAAG,GAAG,CAAC;AACvB,KAAK,WAAW,GAAG,GAAG,CAAC;AACvB,KAAK,WAAW,GAAG,GAAG,CAAC;AAEvB,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CACnD;AAED,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC7D,IAAI,SAA4B;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAuC;gBAEvD,MAAM,EAAE,qBAAqB;IAOnC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7D,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKnD,OAAO;IAKrB,OAAO,CAAC,SAAS;IAKX,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAChC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RubricLangChainHandler = void 0;
4
+ const rubric_client_1 = require("../rubric-client");
5
+ // Lazy-load LangChain types — optional peer dependency
6
+ let BaseCallbackHandler;
7
+ try {
8
+ BaseCallbackHandler = require('@langchain/core/callbacks/base').BaseCallbackHandler;
9
+ }
10
+ catch {
11
+ BaseCallbackHandler = class {
12
+ constructor() {
13
+ throw new Error('[RubricSDK] LangChain integration requires @langchain/core. Install with: npm install @langchain/core');
14
+ }
15
+ };
16
+ }
17
+ class RubricLangChainHandler extends BaseCallbackHandler {
18
+ constructor(config) {
19
+ super();
20
+ this.name = 'RubricLangChainHandler';
21
+ this.client = new rubric_client_1.RubricClient({ backgroundQueue: true, ...config });
22
+ this.events = new Set(config.events ?? ['llm', 'chain', 'agent', 'tool']);
23
+ this.pipelineId = config.pipelineId;
24
+ }
25
+ async handleLLMEnd(output, runId) {
26
+ if (!this.events.has('llm'))
27
+ return;
28
+ const gen = output.generations?.[0]?.[0];
29
+ const text = typeof gen?.text === 'string' ? gen.text : JSON.stringify(gen);
30
+ const tokenUsage = output.llmOutput?.tokenUsage;
31
+ await this._attest({ agentId: `langchain-llm:${runId.slice(0, 8)}`, output: text.slice(0, 2000), leafType: 'AGENT_OUTPUT', metadata: { runId, event: 'llm_end', promptTokens: tokenUsage?.promptTokens ?? 0, completionTokens: tokenUsage?.completionTokens ?? 0 }, pipelineId: this._pipeline(runId) });
32
+ }
33
+ async handleLLMError(error, runId) {
34
+ if (!this.events.has('llm'))
35
+ return;
36
+ await this._attest({ agentId: `langchain-llm:${runId.slice(0, 8)}`, output: `LLM_ERROR: ${error.message}`, leafType: 'AGENT_OUTPUT', metadata: { runId, event: 'llm_error', error: error.message } });
37
+ }
38
+ async handleChainEnd(outputs, runId, parentRunId) {
39
+ if (!this.events.has('chain'))
40
+ return;
41
+ const output = typeof outputs === 'string' ? outputs : JSON.stringify(outputs).slice(0, 2000);
42
+ await this._attest({ agentId: `langchain-chain:${runId.slice(0, 8)}`, output, leafType: 'AGENT_OUTPUT', metadata: { runId, parentRunId: parentRunId ?? '', event: 'chain_end' }, pipelineId: this._pipeline(parentRunId ?? runId) });
43
+ }
44
+ async handleChainError(error, runId) {
45
+ if (!this.events.has('chain'))
46
+ return;
47
+ await this._attest({ agentId: `langchain-chain:${runId.slice(0, 8)}`, output: `CHAIN_ERROR: ${error.message}`, leafType: 'AGENT_OUTPUT', metadata: { runId, event: 'chain_error', error: error.message } });
48
+ }
49
+ async handleAgentAction(action, runId) {
50
+ if (!this.events.has('agent'))
51
+ return;
52
+ await this._attest({ agentId: `langchain-agent:${runId.slice(0, 8)}`, output: `ACTION:${action.tool} LOG:${action.log?.slice(0, 500) ?? ''}`, leafType: 'RULE_APPLIED', metadata: { runId, event: 'agent_action', tool: action.tool, toolInput: JSON.stringify(action.toolInput).slice(0, 500) }, pipelineId: this._pipeline(runId) });
53
+ }
54
+ async handleAgentEnd(action, runId) {
55
+ if (!this.events.has('agent'))
56
+ return;
57
+ await this._attest({ agentId: `langchain-agent:${runId.slice(0, 8)}`, output: JSON.stringify(action.returnValues).slice(0, 2000), leafType: 'AGENT_OUTPUT', metadata: { runId, event: 'agent_finish' }, pipelineId: this._pipeline(runId) });
58
+ }
59
+ async handleToolEnd(output, runId) {
60
+ if (!this.events.has('tool'))
61
+ return;
62
+ await this._attest({ agentId: `langchain-tool:${runId.slice(0, 8)}`, output: output.slice(0, 2000), leafType: 'EXTERNAL_ORACLE', metadata: { runId, event: 'tool_end' } });
63
+ }
64
+ async handleToolError(error, runId) {
65
+ if (!this.events.has('tool'))
66
+ return;
67
+ await this._attest({ agentId: `langchain-tool:${runId.slice(0, 8)}`, output: `TOOL_ERROR: ${error.message}`, leafType: 'EXTERNAL_ORACLE', metadata: { runId, event: 'tool_error', error: error.message } });
68
+ }
69
+ async _attest(req) {
70
+ try {
71
+ await this.client.attest(req);
72
+ }
73
+ catch (err) {
74
+ console.warn('[RubricLangChain] Attestation error (non-fatal):', err);
75
+ }
76
+ }
77
+ _pipeline(runId) {
78
+ if (!this.pipelineId)
79
+ return undefined;
80
+ return typeof this.pipelineId === 'function' ? this.pipelineId(runId) : this.pipelineId;
81
+ }
82
+ async shutdown() { await this.client.shutdown(); }
83
+ }
84
+ exports.RubricLangChainHandler = RubricLangChainHandler;
85
+ //# sourceMappingURL=langchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../plugins/langchain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type OpenAI from 'openai';
2
+ import type { ChatCompletion, ChatCompletionCreateParamsNonStreaming } from 'openai/resources/chat/completions';
3
+ import { RubricClientConfig } from '../rubric-client';
4
+ export interface RubricOpenAIConfig extends RubricClientConfig {
5
+ agentId?: string;
6
+ attestStreaming?: boolean;
7
+ maxOutputLength?: number;
8
+ }
9
+ export declare function withRubric<T extends OpenAI>(openaiClient: T, config: RubricOpenAIConfig): T;
10
+ export declare class RubricOpenAIClient {
11
+ private readonly rubric;
12
+ private readonly openai;
13
+ private readonly agentId;
14
+ private readonly maxLen;
15
+ constructor(openaiClient: OpenAI, config: RubricOpenAIConfig);
16
+ readonly chat: {
17
+ completions: {
18
+ create: (params: ChatCompletionCreateParamsNonStreaming, options?: any) => Promise<ChatCompletion>;
19
+ };
20
+ };
21
+ shutdown(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=openai-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-plugin.d.ts","sourceRoot":"","sources":["../../plugins/openai-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAuB,sCAAsC,EAAuC,MAAM,mCAAmC,CAAC;AAE1K,OAAO,EAAgB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,CAAC,CA0B3F;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB;IAO5D,QAAQ,CAAC,IAAI;;6BAC2B,sCAAsC,YAAY,GAAG,KAAG,OAAO,CAAC,cAAc,CAAC;;MAOrH;IAEI,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAChC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RubricOpenAIClient = void 0;
4
+ exports.withRubric = withRubric;
5
+ const rubric_client_1 = require("../rubric-client");
6
+ function withRubric(openaiClient, config) {
7
+ const rubric = new rubric_client_1.RubricClient({ backgroundQueue: true, ...config });
8
+ const agentId = config.agentId ?? 'openai-agent';
9
+ const maxLen = config.maxOutputLength ?? 3000;
10
+ const attestStreaming = config.attestStreaming ?? true;
11
+ const originalCreate = openaiClient.chat.completions.create.bind(openaiClient.chat.completions);
12
+ openaiClient.chat.completions.create = async function (params, options) {
13
+ const startedAt = Date.now();
14
+ if (params.stream) {
15
+ const stream = await originalCreate(params, options);
16
+ if (!attestStreaming)
17
+ return stream;
18
+ const collected = [];
19
+ const gen = async function* () {
20
+ for await (const chunk of stream) {
21
+ collected.push(chunk);
22
+ yield chunk;
23
+ }
24
+ const text = collected.flatMap(c => c.choices).map(c => c.delta?.content ?? '').join('');
25
+ safeAttest(rubric, { agentId, output: text.slice(0, maxLen), leafType: 'AGENT_OUTPUT', metadata: { model: params.model, streaming: true, durationMs: Date.now() - startedAt, promptMessages: params.messages?.length ?? 0 } }).catch(() => { });
26
+ };
27
+ return gen();
28
+ }
29
+ const completion = await originalCreate(params, options);
30
+ const text = completion.choices?.[0]?.message?.content ?? '';
31
+ await safeAttest(rubric, { agentId, output: text.slice(0, maxLen), leafType: 'AGENT_OUTPUT', metadata: { model: completion.model, streaming: false, durationMs: Date.now() - startedAt, promptTokens: completion.usage?.prompt_tokens ?? 0, completionTokens: completion.usage?.completion_tokens ?? 0, finishReason: completion.choices?.[0]?.finish_reason ?? '' }, confidence: finishToConf(completion.choices?.[0]?.finish_reason) });
32
+ return completion;
33
+ };
34
+ return openaiClient;
35
+ }
36
+ class RubricOpenAIClient {
37
+ constructor(openaiClient, config) {
38
+ this.chat = {
39
+ completions: { create: async (params, options) => {
40
+ const startedAt = Date.now();
41
+ const completion = await this.openai.chat.completions.create(params, options);
42
+ const text = completion.choices?.[0]?.message?.content ?? '';
43
+ await safeAttest(this.rubric, { agentId: this.agentId, output: text.slice(0, this.maxLen), leafType: 'AGENT_OUTPUT', metadata: { model: completion.model, durationMs: Date.now() - startedAt, promptTokens: completion.usage?.prompt_tokens ?? 0, completionTokens: completion.usage?.completion_tokens ?? 0 }, confidence: finishToConf(completion.choices?.[0]?.finish_reason) });
44
+ return completion;
45
+ } },
46
+ };
47
+ this.openai = openaiClient;
48
+ this.agentId = config.agentId ?? 'openai-agent';
49
+ this.maxLen = config.maxOutputLength ?? 3000;
50
+ this.rubric = new rubric_client_1.RubricClient({ backgroundQueue: true, ...config });
51
+ }
52
+ async shutdown() { await this.rubric.shutdown(); }
53
+ }
54
+ exports.RubricOpenAIClient = RubricOpenAIClient;
55
+ async function safeAttest(client, req) {
56
+ try {
57
+ await client.attest(req);
58
+ }
59
+ catch (err) {
60
+ console.warn('[RubricOpenAI] Attestation error (non-fatal):', err);
61
+ }
62
+ }
63
+ function finishToConf(reason) {
64
+ if (reason === 'stop')
65
+ return 0.95;
66
+ if (reason === 'length')
67
+ return 0.70;
68
+ if (reason === 'content_filter')
69
+ return 0.30;
70
+ return undefined;
71
+ }
72
+ //# sourceMappingURL=openai-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-plugin.js","sourceRoot":"","sources":["../../plugins/openai-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export type ProofStage = 'local' | 'anchored' | 'confirmed';
2
+ export declare const STAGE_METADATA: Record<ProofStage, {
3
+ label: string;
4
+ strength: string;
5
+ eta: string;
6
+ }>;
7
+ export interface LocalProofData {
8
+ stage: 'local';
9
+ attestationId: string;
10
+ agentId: string;
11
+ localSignature: string;
12
+ publicKey: string;
13
+ signedAt: string;
14
+ payload: Record<string, unknown>;
15
+ }
16
+ export interface AnchoredProofData extends Omit<LocalProofData, 'stage'> {
17
+ stage: 'anchored';
18
+ merkleRoot: string;
19
+ serverAttestationId: string;
20
+ anchoredAt: string;
21
+ }
22
+ export interface ConfirmedProofData extends Omit<AnchoredProofData, 'stage'> {
23
+ stage: 'confirmed';
24
+ hcsTopicId: string;
25
+ hcsSequenceNumber: number;
26
+ hcsTimestamp: string;
27
+ hashScanUrl: string;
28
+ }
29
+ export type AnyProofData = LocalProofData | AnchoredProofData | ConfirmedProofData;
30
+ export type UpgradeCallback<T extends AnyProofData = AnyProofData> = (proof: T) => void;
31
+ export declare class LiveProof {
32
+ private _data;
33
+ private _listeners;
34
+ private _resolvers;
35
+ constructor(initialData: LocalProofData);
36
+ get stage(): ProofStage;
37
+ get attestationId(): string;
38
+ get agentId(): string;
39
+ get data(): Readonly<AnyProofData>;
40
+ get isConfirmed(): boolean;
41
+ get hashScanUrl(): string | undefined;
42
+ onUpgrade(stage: any, cb: UpgradeCallback<any>): this;
43
+ waitFor(stage: ProofStage, timeoutMs?: number): Promise<any>;
44
+ toJSON(): AnyProofData;
45
+ _upgrade(newData: AnchoredProofData | ConfirmedProofData): void;
46
+ private _isPastStage;
47
+ }
48
+ //# sourceMappingURL=proof-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-types.d.ts","sourceRoot":"","sources":["../proof-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAE5D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAI/F,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IACtE,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC1E,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AACnF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAQxF,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,UAAU,CAAwG;gBAE9G,WAAW,EAAE,cAAc;IAEvC,IAAI,KAAK,IAAI,UAAU,CAA6B;IACpD,IAAI,aAAa,IAAI,MAAM,CAAqC;IAChE,IAAI,OAAO,IAAI,MAAM,CAA+B;IACpD,IAAI,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAuB;IACzD,IAAI,WAAW,IAAI,OAAO,CAA6C;IACvE,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAA0G;IAE/I,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI;IAOrD,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAU5D,MAAM,IAAI,YAAY;IAEtB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI;IAqB/D,OAAO,CAAC,YAAY;CAIrB"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiveProof = exports.STAGE_METADATA = void 0;
4
+ exports.STAGE_METADATA = {
5
+ local: { label: 'Local Signature', strength: 'Tamper-evident', eta: '<1ms' },
6
+ anchored: { label: 'Rubric Anchor', strength: 'Independently verifiable', eta: '5-10s' },
7
+ confirmed: { label: 'HCS Confirmed', strength: 'Immutable timestamp', eta: '~30s' },
8
+ };
9
+ class LiveProof {
10
+ constructor(initialData) {
11
+ this._listeners = { anchored: [], confirmed: [], any: [] };
12
+ this._resolvers = new Map([['anchored', []], ['confirmed', []]]);
13
+ this._data = initialData;
14
+ }
15
+ get stage() { return this._data.stage; }
16
+ get attestationId() { return this._data.attestationId; }
17
+ get agentId() { return this._data.agentId; }
18
+ get data() { return this._data; }
19
+ get isConfirmed() { return this._data.stage === 'confirmed'; }
20
+ get hashScanUrl() { return this._data.stage === 'confirmed' ? this._data.hashScanUrl : undefined; }
21
+ onUpgrade(stage, cb) {
22
+ if (stage === 'any') {
23
+ this._listeners.any.push(cb);
24
+ return this;
25
+ }
26
+ if (this._isPastStage(stage)) {
27
+ cb(this._data);
28
+ return this;
29
+ }
30
+ this._listeners[stage].push(cb);
31
+ return this;
32
+ }
33
+ waitFor(stage, timeoutMs = 90000) {
34
+ if (this._isPastStage(stage))
35
+ return Promise.resolve(this._data);
36
+ return new Promise((resolve, reject) => {
37
+ const timer = setTimeout(() => reject(new Error(`LiveProof.waitFor('${stage}') timed out after ${timeoutMs}ms`)), timeoutMs);
38
+ const resolvers = this._resolvers.get(stage) ?? [];
39
+ resolvers.push((data) => { clearTimeout(timer); resolve(data); });
40
+ this._resolvers.set(stage, resolvers);
41
+ });
42
+ }
43
+ toJSON() { return { ...this._data }; }
44
+ _upgrade(newData) {
45
+ const prevStage = this._data.stage;
46
+ this._data = newData;
47
+ for (const cb of this._listeners.any) {
48
+ try {
49
+ cb(newData);
50
+ }
51
+ catch { }
52
+ }
53
+ if (newData.stage === 'anchored' && prevStage === 'local') {
54
+ for (const cb of this._listeners.anchored) {
55
+ try {
56
+ cb(newData);
57
+ }
58
+ catch { }
59
+ }
60
+ for (const res of this._resolvers.get('anchored') ?? []) {
61
+ try {
62
+ res(newData);
63
+ }
64
+ catch { }
65
+ }
66
+ this._resolvers.set('anchored', []);
67
+ }
68
+ if (newData.stage === 'confirmed') {
69
+ if (prevStage === 'local') {
70
+ for (const cb of this._listeners.anchored) {
71
+ try {
72
+ cb(newData);
73
+ }
74
+ catch { }
75
+ }
76
+ for (const res of this._resolvers.get('anchored') ?? []) {
77
+ try {
78
+ res(newData);
79
+ }
80
+ catch { }
81
+ }
82
+ this._resolvers.set('anchored', []);
83
+ }
84
+ for (const cb of this._listeners.confirmed) {
85
+ try {
86
+ cb(newData);
87
+ }
88
+ catch { }
89
+ }
90
+ for (const res of this._resolvers.get('confirmed') ?? []) {
91
+ try {
92
+ res(newData);
93
+ }
94
+ catch { }
95
+ }
96
+ this._resolvers.set('confirmed', []);
97
+ }
98
+ }
99
+ _isPastStage(stage) {
100
+ const order = ['local', 'anchored', 'confirmed'];
101
+ return order.indexOf(this._data.stage) >= order.indexOf(stage);
102
+ }
103
+ }
104
+ exports.LiveProof = LiveProof;
105
+ //# sourceMappingURL=proof-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-types.js","sourceRoot":"","sources":["../proof-types.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAyE;IAClG,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE;IAC5E,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,GAAG,EAAE,OAAO,EAAE;IACxF,SAAS,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,EAAE,MAAM,EAAE;CACpF,CAAC;AAoCF,MAAa,SAAS;IAKpB,YAAY,WAA2B;QAH/B,eAAU,GAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACxE,eAAU,GAAyD,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;IAAC,CAAC;IAEtE,IAAI,KAAK,KAAiB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,IAAI,aAAa,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,IAAI,IAAI,KAA6B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,IAAI,WAAW,KAAc,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC;IACvE,IAAI,WAAW,KAAyB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAE,IAAI,CAAC,KAA4B,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAE/I,SAAS,CAAC,KAAU,EAAE,EAAwB;QAC5C,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QACnE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,KAAiC,CAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAiB,EAAE,SAAS,GAAG,KAAM;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,KAAK,sBAAsB,SAAS,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC7H,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAmB,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEpD,QAAQ,CAAC,OAA+C;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QACxE,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1D,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,EAAE,CAAC,OAA4B,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YAClG,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YAC5F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC1B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAAC,IAAI,CAAC;wBAAC,EAAE,CAAC,OAAc,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACpF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;oBAAC,IAAI,CAAC;wBAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAC5F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,EAAE,CAAC,OAA6B,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YACpG,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBAAC,IAAI,CAAC;oBAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YAC7F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAiB;QACpC,MAAM,KAAK,GAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;CACF;AA1DD,8BA0DC"}
@@ -0,0 +1,24 @@
1
+ import { LiveProof, LocalProofData } from './proof-types';
2
+ export interface UpgradeManagerConfig {
3
+ baseUrl: string;
4
+ apiKey: string;
5
+ pollInterval?: number;
6
+ maxTrackingAge?: number;
7
+ hcsTopicId?: string;
8
+ }
9
+ export declare class ProofUpgradeManager {
10
+ private readonly config;
11
+ private readonly tracked;
12
+ private timer;
13
+ constructor(config: UpgradeManagerConfig);
14
+ track(proof: LiveProof): void;
15
+ buildAndTrack(localData: LocalProofData): LiveProof;
16
+ stop(): void;
17
+ get size(): number;
18
+ private _ensureRunning;
19
+ private _poll;
20
+ private _applyUpgrade;
21
+ }
22
+ export declare function getUpgradeManager(config?: UpgradeManagerConfig): ProofUpgradeManager;
23
+ export declare function resetUpgradeManager(): void;
24
+ //# sourceMappingURL=proof-upgrade-manager.d.ts.map