cogxai 2.8.0 → 2.8.2

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 (92) hide show
  1. package/README.md +10 -19
  2. package/dist/agents/types.js +2 -2
  3. package/dist/cli/banner.d.ts.map +1 -1
  4. package/dist/cli/banner.js +6 -13
  5. package/dist/cli/banner.js.map +1 -1
  6. package/dist/cli/init.js +30 -30
  7. package/dist/cli/init.js.map +1 -1
  8. package/dist/cli/register.js +3 -3
  9. package/dist/cli/register.js.map +1 -1
  10. package/dist/cli/setup.d.ts.map +1 -1
  11. package/dist/cli/setup.js +10 -3
  12. package/dist/cli/setup.js.map +1 -1
  13. package/dist/config.d.ts +2 -2
  14. package/dist/config.js +3 -3
  15. package/dist/config.js.map +1 -1
  16. package/dist/core/allium-client.d.ts +4 -4
  17. package/dist/core/allium-client.js +27 -27
  18. package/dist/core/allium-client.js.map +1 -1
  19. package/dist/core/base-client.d.ts +40 -0
  20. package/dist/core/base-client.d.ts.map +1 -0
  21. package/dist/core/base-client.js +166 -0
  22. package/dist/core/base-client.js.map +1 -0
  23. package/dist/core/claude-client.js +1 -1
  24. package/dist/core/claude-client.js.map +1 -1
  25. package/dist/core/database.js +2 -2
  26. package/dist/core/encryption.d.ts +9 -8
  27. package/dist/core/encryption.d.ts.map +1 -1
  28. package/dist/core/encryption.js +31 -20
  29. package/dist/core/encryption.js.map +1 -1
  30. package/dist/core/guardrails.js +10 -10
  31. package/dist/core/guardrails.js.map +1 -1
  32. package/dist/core/input-guardrails.js +4 -4
  33. package/dist/core/input-guardrails.js.map +1 -1
  34. package/dist/core/memory-graph.js +2 -2
  35. package/dist/core/memory-graph.js.map +1 -1
  36. package/dist/core/memory.d.ts +1 -1
  37. package/dist/core/memory.d.ts.map +1 -1
  38. package/dist/core/memory.js +7 -7
  39. package/dist/core/memory.js.map +1 -1
  40. package/dist/core/price-oracle.js +3 -3
  41. package/dist/core/price-oracle.js.map +1 -1
  42. package/dist/core/venice-client.js +1 -1
  43. package/dist/core/venice-client.js.map +1 -1
  44. package/dist/features/market-monitor.js +7 -7
  45. package/dist/features/onchain-opinion.js +6 -6
  46. package/dist/features/onchain-opinion.js.map +1 -1
  47. package/dist/features/x-sentiment-monitor.js +1 -1
  48. package/dist/features/x-sentiment-monitor.js.map +1 -1
  49. package/dist/index.js +2 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/knowledge/tokenomics.js +1 -1
  52. package/dist/knowledge/tokenomics.js.map +1 -1
  53. package/dist/mcp/server.js +3 -3
  54. package/dist/mcp/server.js.map +1 -1
  55. package/dist/mentions/dispatcher.js +2 -2
  56. package/dist/mentions/dispatcher.js.map +1 -1
  57. package/dist/sdk/cortex.js +11 -11
  58. package/dist/sdk/cortex.js.map +1 -1
  59. package/dist/sdk/types.d.ts +7 -7
  60. package/dist/sdk/types.d.ts.map +1 -1
  61. package/dist/types/api.d.ts +1 -1
  62. package/dist/types/api.d.ts.map +1 -1
  63. package/dist/utils/constants.d.ts +1 -3
  64. package/dist/utils/constants.d.ts.map +1 -1
  65. package/dist/utils/constants.js +3 -5
  66. package/dist/utils/constants.js.map +1 -1
  67. package/dist/utils/format.d.ts +0 -1
  68. package/dist/utils/format.d.ts.map +1 -1
  69. package/dist/utils/format.js +0 -4
  70. package/dist/utils/format.js.map +1 -1
  71. package/dist/utils/text.d.ts +1 -1
  72. package/dist/utils/text.d.ts.map +1 -1
  73. package/dist/utils/text.js +3 -3
  74. package/dist/utils/text.js.map +1 -1
  75. package/dist/verify-app/routes.d.ts.map +1 -1
  76. package/dist/verify-app/routes.js +15 -50
  77. package/dist/verify-app/routes.js.map +1 -1
  78. package/dist/webhook/agent-routes.js +2 -2
  79. package/dist/webhook/agent-routes.js.map +1 -1
  80. package/dist/webhook/cortex-routes.d.ts.map +1 -1
  81. package/dist/webhook/cortex-routes.js +32 -28
  82. package/dist/webhook/cortex-routes.js.map +1 -1
  83. package/dist/webhook/dashboard-routes.js +1 -1
  84. package/dist/webhook/dashboard-routes.js.map +1 -1
  85. package/dist/webhook/server.js +20 -20
  86. package/dist/webhook/server.js.map +1 -1
  87. package/package.json +5 -4
  88. package/supabase-schema.sql +4 -4
  89. package/dist/core/solana-client.d.ts +0 -39
  90. package/dist/core/solana-client.d.ts.map +0 -1
  91. package/dist/core/solana-client.js +0 -366
  92. package/dist/core/solana-client.js.map +0 -1
@@ -1,366 +0,0 @@
1
- "use strict";
2
- /**
3
- * Solana client — MEMO WRITES + MEMORY REGISTRY.
4
- *
5
- * SECURITY: This module can only:
6
- * 1. Write memo data to Solana
7
- * 2. Initialize/interact with the memory registry PDA
8
- * It has NO fund transfer, token transfer, or swap capability.
9
- * The bot wallet is used exclusively for signing memo/registry transactions.
10
- * Any attempt to add transfer functionality should be rejected in code review.
11
- */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || (function () {
29
- var ownKeys = function(o) {
30
- ownKeys = Object.getOwnPropertyNames || function (o) {
31
- var ar = [];
32
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
- return ar;
34
- };
35
- return ownKeys(o);
36
- };
37
- return function (mod) {
38
- if (mod && mod.__esModule) return mod;
39
- var result = {};
40
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
- __setModuleDefault(result, mod);
42
- return result;
43
- };
44
- })();
45
- var __importDefault = (this && this.__importDefault) || function (mod) {
46
- return (mod && mod.__esModule) ? mod : { "default": mod };
47
- };
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.getConnection = getConnection;
50
- exports._configureSolana = _configureSolana;
51
- exports.getBotWallet = getBotWallet;
52
- exports.writeMemo = writeMemo;
53
- exports.writeMemoDevnet = writeMemoDevnet;
54
- exports.verifySignature = verifySignature;
55
- exports.solscanTxUrl = solscanTxUrl;
56
- exports._configureMemoryRegistry = _configureMemoryRegistry;
57
- exports.isRegistryEnabled = isRegistryEnabled;
58
- exports.initializeRegistry = initializeRegistry;
59
- exports.registerMemoryOnChain = registerMemoryOnChain;
60
- exports.verifyMemoryOnChain = verifyMemoryOnChain;
61
- const web3_js_1 = require("@solana/web3.js");
62
- const bs58Module = __importStar(require("bs58"));
63
- const bs58 = bs58Module.default || bs58Module;
64
- const config_1 = require("../config");
65
- const logger_1 = require("./logger");
66
- const tweetnacl_1 = __importDefault(require("tweetnacl"));
67
- const constants_1 = require("../utils/constants");
68
- const log = (0, logger_1.createChildLogger)('solana-client');
69
- let connection;
70
- let botWallet = null;
71
- const MEMO_PROGRAM_ID = new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_ID);
72
- function getConnection() {
73
- if (!connection) {
74
- connection = new web3_js_1.Connection(config_1.config.solana.rpcUrl, 'confirmed');
75
- }
76
- return connection;
77
- }
78
- /** @internal SDK escape hatch — allows Cortex to inject Solana config. */
79
- function _configureSolana(rpcUrl, privateKey) {
80
- connection = new web3_js_1.Connection(rpcUrl, 'confirmed');
81
- if (privateKey) {
82
- try {
83
- const raw = privateKey.trim();
84
- let secretKey;
85
- if (raw.startsWith('[')) {
86
- secretKey = Uint8Array.from(JSON.parse(raw));
87
- }
88
- else {
89
- secretKey = bs58.decode(raw);
90
- }
91
- botWallet = web3_js_1.Keypair.fromSecretKey(secretKey);
92
- }
93
- catch (err) {
94
- log.error({ err }, 'SDK: Failed to load bot wallet');
95
- }
96
- }
97
- }
98
- function getBotWallet() {
99
- if (!botWallet && config_1.config.solana.botWalletPrivateKey) {
100
- try {
101
- let secretKey;
102
- const raw = config_1.config.solana.botWalletPrivateKey.trim();
103
- if (raw.startsWith('[')) {
104
- // JSON array format: [1,2,3,...]
105
- secretKey = Uint8Array.from(JSON.parse(raw));
106
- }
107
- else {
108
- // Base58 encoded format
109
- secretKey = bs58.decode(raw);
110
- }
111
- botWallet = web3_js_1.Keypair.fromSecretKey(secretKey);
112
- log.info({ publicKey: botWallet.publicKey.toBase58() }, 'Bot wallet loaded');
113
- }
114
- catch (err) {
115
- log.error({ err }, 'Failed to load bot wallet');
116
- }
117
- }
118
- return botWallet;
119
- }
120
- async function writeMemo(memo) {
121
- const wallet = getBotWallet();
122
- if (!wallet) {
123
- log.error('No bot wallet configured, cannot write memo');
124
- return null;
125
- }
126
- const conn = getConnection();
127
- const truncatedMemo = memo.slice(0, constants_1.MEMO_MAX_LENGTH);
128
- const instruction = new web3_js_1.TransactionInstruction({
129
- keys: [{ pubkey: wallet.publicKey, isSigner: true, isWritable: true }],
130
- programId: MEMO_PROGRAM_ID,
131
- data: Buffer.from(truncatedMemo, 'utf-8'),
132
- });
133
- const transaction = new web3_js_1.Transaction().add(instruction);
134
- try {
135
- const signature = await (0, web3_js_1.sendAndConfirmTransaction)(conn, transaction, [wallet]);
136
- log.info({ signature, memoLength: truncatedMemo.length }, 'Memo written on-chain');
137
- return signature;
138
- }
139
- catch (err) {
140
- log.error({ err }, 'Failed to write memo');
141
- return null;
142
- }
143
- }
144
- let devnetConnection;
145
- function getDevnetConnection() {
146
- if (!devnetConnection) {
147
- devnetConnection = new web3_js_1.Connection('https://api.devnet.solana.com', 'confirmed');
148
- }
149
- return devnetConnection;
150
- }
151
- async function writeMemoDevnet(memo) {
152
- const wallet = getBotWallet();
153
- if (!wallet) {
154
- log.error('No bot wallet configured, cannot write devnet memo');
155
- return null;
156
- }
157
- const conn = getDevnetConnection();
158
- const truncatedMemo = memo.slice(0, constants_1.MEMO_MAX_LENGTH);
159
- const instruction = new web3_js_1.TransactionInstruction({
160
- keys: [{ pubkey: wallet.publicKey, isSigner: true, isWritable: true }],
161
- programId: MEMO_PROGRAM_ID,
162
- data: Buffer.from(truncatedMemo, 'utf-8'),
163
- });
164
- const transaction = new web3_js_1.Transaction().add(instruction);
165
- try {
166
- const signature = await (0, web3_js_1.sendAndConfirmTransaction)(conn, transaction, [wallet]);
167
- log.info({ signature, memoLength: truncatedMemo.length }, 'Memo written on devnet');
168
- return signature;
169
- }
170
- catch (err) {
171
- log.error({ err }, 'Failed to write devnet memo');
172
- return null;
173
- }
174
- }
175
- function verifySignature(message, signature, publicKey) {
176
- const messageBytes = new TextEncoder().encode(message);
177
- return tweetnacl_1.default.sign.detached.verify(messageBytes, signature, publicKey);
178
- }
179
- function solscanTxUrl(signature) {
180
- return `${constants_1.SOLSCAN_TX_BASE_URL}/${signature}`;
181
- }
182
- // ============================================================
183
- // ON-CHAIN MEMORY REGISTRY (Anchor program — raw instructions)
184
- //
185
- // Uses raw TransactionInstruction to avoid @coral-xyz/anchor client
186
- // dependency, keeping the SDK lightweight. The instruction data layout
187
- // matches the Anchor program's Borsh serialization.
188
- // ============================================================
189
- let registryProgramId = null;
190
- let registryInitialized = false;
191
- /** @internal SDK escape hatch — configure the memory registry program ID. */
192
- function _configureMemoryRegistry(programId) {
193
- try {
194
- registryProgramId = new web3_js_1.PublicKey(programId);
195
- log.info({ programId: programId.slice(0, 12) + '...' }, 'Memory registry program configured');
196
- }
197
- catch (err) {
198
- log.error({ err }, 'Invalid memory registry program ID');
199
- }
200
- }
201
- /** Check if memory registry is configured. */
202
- function isRegistryEnabled() {
203
- return registryProgramId !== null;
204
- }
205
- /**
206
- * Derive the registry PDA for a wallet.
207
- */
208
- function deriveRegistryPDA(authority) {
209
- if (!registryProgramId)
210
- throw new Error('Registry program not configured');
211
- return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('memory-registry'), authority.toBuffer()], registryProgramId);
212
- }
213
- /**
214
- * Compute Anchor instruction discriminator: sha256("global:<method_name>")[0..8]
215
- */
216
- function anchorDiscriminator(name) {
217
- const { createHash } = require('crypto');
218
- const hash = createHash('sha256').update(`global:${name}`).digest();
219
- return hash.subarray(0, 8);
220
- }
221
- /**
222
- * Initialize the registry PDA for the bot wallet (one-time).
223
- * Silently succeeds if already initialized.
224
- */
225
- async function initializeRegistry() {
226
- if (registryInitialized)
227
- return;
228
- const wallet = getBotWallet();
229
- if (!wallet || !registryProgramId)
230
- return;
231
- const conn = getConnection();
232
- const [registryPDA] = deriveRegistryPDA(wallet.publicKey);
233
- // Check if PDA already exists
234
- const accountInfo = await conn.getAccountInfo(registryPDA);
235
- if (accountInfo) {
236
- registryInitialized = true;
237
- log.info({ registry: registryPDA.toBase58() }, 'Registry PDA already exists');
238
- return;
239
- }
240
- const discriminator = anchorDiscriminator('initialize');
241
- const instruction = new web3_js_1.TransactionInstruction({
242
- keys: [
243
- { pubkey: registryPDA, isSigner: false, isWritable: true },
244
- { pubkey: wallet.publicKey, isSigner: true, isWritable: true },
245
- { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
246
- ],
247
- programId: registryProgramId,
248
- data: discriminator,
249
- });
250
- const transaction = new web3_js_1.Transaction().add(instruction);
251
- try {
252
- const signature = await (0, web3_js_1.sendAndConfirmTransaction)(conn, transaction, [wallet]);
253
- registryInitialized = true;
254
- log.info({ signature, registry: registryPDA.toBase58() }, 'Registry PDA initialized on-chain');
255
- }
256
- catch (err) {
257
- log.error({ err }, 'Failed to initialize registry PDA');
258
- throw err;
259
- }
260
- }
261
- /**
262
- * Memory type string to on-chain u8 index.
263
- */
264
- function memoryTypeToU8(type) {
265
- switch (type) {
266
- case 'episodic': return 0;
267
- case 'semantic': return 1;
268
- case 'procedural': return 2;
269
- case 'self_model': return 3;
270
- default: return 0;
271
- }
272
- }
273
- /**
274
- * Importance float to tier u8.
275
- */
276
- function importanceToTier(importance) {
277
- if (importance > 0.7)
278
- return 2; // high
279
- if (importance >= 0.3)
280
- return 1; // medium
281
- return 0; // low
282
- }
283
- /**
284
- * Register a memory's content hash in the on-chain registry.
285
- * Returns the transaction signature or null on failure.
286
- */
287
- async function registerMemoryOnChain(contentHash, memoryType, importance, memoryId, encrypted) {
288
- const wallet = getBotWallet();
289
- if (!wallet || !registryProgramId)
290
- return null;
291
- const conn = getConnection();
292
- const [registryPDA] = deriveRegistryPDA(wallet.publicKey);
293
- const discriminator = anchorDiscriminator('register_memory');
294
- // Borsh-serialize arguments:
295
- // content_hash: [u8; 32]
296
- // memory_type: u8
297
- // importance_tier: u8
298
- // memory_id: u64 (LE)
299
- // encrypted: bool (u8)
300
- const data = Buffer.alloc(8 + 32 + 1 + 1 + 8 + 1); // discriminator + args
301
- discriminator.copy(data, 0);
302
- contentHash.copy(data, 8, 0, 32);
303
- data.writeUInt8(memoryTypeToU8(memoryType), 40);
304
- data.writeUInt8(importanceToTier(importance), 41);
305
- data.writeBigUInt64LE(BigInt(memoryId), 42);
306
- data.writeUInt8(encrypted ? 1 : 0, 50);
307
- const instruction = new web3_js_1.TransactionInstruction({
308
- keys: [
309
- { pubkey: registryPDA, isSigner: false, isWritable: true },
310
- { pubkey: wallet.publicKey, isSigner: true, isWritable: true },
311
- { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
312
- ],
313
- programId: registryProgramId,
314
- data,
315
- });
316
- const transaction = new web3_js_1.Transaction().add(instruction);
317
- try {
318
- const signature = await (0, web3_js_1.sendAndConfirmTransaction)(conn, transaction, [wallet]);
319
- log.info({ signature: signature.slice(0, 16), memoryId }, 'Memory registered on-chain');
320
- return signature;
321
- }
322
- catch (err) {
323
- log.warn({ err, memoryId }, 'Failed to register memory on-chain');
324
- return null;
325
- }
326
- }
327
- /**
328
- * Verify a content hash exists in the on-chain registry.
329
- * Returns true if found, false otherwise.
330
- */
331
- async function verifyMemoryOnChain(contentHash, authority) {
332
- const wallet = getBotWallet();
333
- const authPubkey = authority || wallet?.publicKey;
334
- if (!authPubkey || !registryProgramId)
335
- return false;
336
- const conn = getConnection();
337
- const [registryPDA] = deriveRegistryPDA(authPubkey);
338
- try {
339
- const accountInfo = await conn.getAccountInfo(registryPDA);
340
- if (!accountInfo || !accountInfo.data)
341
- return false;
342
- // Parse the account data (Anchor discriminator + Borsh)
343
- // Skip 8 bytes discriminator + 32 bytes authority + 8 bytes memory_count + 1 byte bump
344
- // Then 4 bytes vec length prefix, then entries
345
- const data = accountInfo.data;
346
- if (data.length < 53)
347
- return false; // Too small to contain any entries
348
- const vecLen = data.readUInt32LE(49);
349
- const ENTRY_SIZE = 56; // Matches MemoryEntry on-chain size
350
- const entriesStart = 53;
351
- for (let i = 0; i < vecLen; i++) {
352
- const offset = entriesStart + i * ENTRY_SIZE;
353
- if (offset + 32 > data.length)
354
- break;
355
- const hash = data.subarray(offset, offset + 32);
356
- if (contentHash.equals(hash))
357
- return true;
358
- }
359
- return false;
360
- }
361
- catch (err) {
362
- log.warn({ err }, 'Failed to verify memory on-chain');
363
- return false;
364
- }
365
- }
366
- //# sourceMappingURL=solana-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana-client.js","sourceRoot":"","sources":["../../src/core/solana-client.ts"],"names":[],"mappings":"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"}