Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
6dfc131
Create agentShared.js
pakeko78 Feb 17, 2026
862ed54
Create agentScout.js
pakeko78 Feb 17, 2026
43d7293
Create agentExecutor.js
pakeko78 Feb 17, 2026
9fcf7a8
Update index.js
pakeko78 Feb 17, 2026
d2e826b
Update package.json
pakeko78 Feb 17, 2026
2fc39ed
Create server.js
pakeko78 Feb 17, 2026
b00f3e7
Create index.html
pakeko78 Feb 17, 2026
0ab4398
Create style.css
pakeko78 Feb 17, 2026
a70e88a
Create app.js
pakeko78 Feb 17, 2026
e73de28
Update server.js
pakeko78 Feb 17, 2026
9ceda88
Update index.html
pakeko78 Feb 17, 2026
6f83f20
Update app.js
pakeko78 Feb 17, 2026
9863208
Update package.json
pakeko78 Feb 17, 2026
d9f2c0d
Create .env.example
pakeko78 Feb 17, 2026
26a77f6
Update .env.example
pakeko78 Feb 17, 2026
dee533d
Update .gitignore
pakeko78 Feb 17, 2026
f9e8bfc
Update server.js
pakeko78 Feb 17, 2026
fa40025
Update index.html
pakeko78 Feb 17, 2026
69b60cf
Update style.css
pakeko78 Feb 17, 2026
d17f384
Update app.js
pakeko78 Feb 17, 2026
88a52cf
Update server.js
pakeko78 Feb 17, 2026
8693179
Update package.json
pakeko78 Feb 17, 2026
2bb1091
Update .env.example
pakeko78 Feb 17, 2026
bc881b1
Update index.html
pakeko78 Feb 17, 2026
5051fed
Update package.json
pakeko78 Feb 18, 2026
cf5ecdc
Update .env.example
pakeko78 Feb 18, 2026
9ca2926
Update server.js
pakeko78 Feb 18, 2026
85c5a9d
Update index.html
pakeko78 Feb 18, 2026
d396b9c
Create cli.js
pakeko78 Feb 18, 2026
603e62b
Update index.html
pakeko78 Feb 18, 2026
f553468
Update server.js
pakeko78 Feb 18, 2026
170acde
Update package.json
pakeko78 Feb 18, 2026
717ef1b
Update server.js
pakeko78 Feb 18, 2026
c1b0e86
Update cli.js
pakeko78 Feb 18, 2026
38e26b4
Update server.js
pakeko78 Feb 18, 2026
95d3dae
Update .env.example
pakeko78 Feb 18, 2026
a1d956d
Update package.json
pakeko78 Feb 18, 2026
af2aee5
Delete public directory
pakeko78 Feb 19, 2026
5c91351
Update package.json
pakeko78 Feb 19, 2026
2ef028d
Update .env.example
pakeko78 Feb 19, 2026
8e16711
Create logger.js
pakeko78 Feb 19, 2026
79e3158
Create http.js
pakeko78 Feb 19, 2026
44a8f1d
Create utils.js
pakeko78 Feb 19, 2026
ae24ca4
Create validation.js
pakeko78 Feb 19, 2026
02b5f52
Create tokens.js
pakeko78 Feb 19, 2026
c3ae8e5
Update tokens.js
pakeko78 Feb 19, 2026
3f6b4ec
Delete rc/core/tokens.js
pakeko78 Feb 19, 2026
38d53c8
Create tokens.js
pakeko78 Feb 19, 2026
3451c09
Create groq.js
pakeko78 Feb 19, 2026
41c3fa0
Create scout.js
pakeko78 Feb 19, 2026
5d504eb
Create analyst.js
pakeko78 Feb 19, 2026
9008538
Create riskgate.js
pakeko78 Feb 19, 2026
3cf1f1d
Create solana.js
pakeko78 Feb 19, 2026
282d1fe
Create evm.js
pakeko78 Feb 19, 2026
b87ae6f
Create executor.js
pakeko78 Feb 19, 2026
c4046f8
Create index.js
pakeko78 Feb 19, 2026
e674d70
Update index.js
pakeko78 Feb 19, 2026
f881a54
Create dexscreener.js
pakeko78 Feb 19, 2026
e0aa343
Update analyst.js
pakeko78 Feb 19, 2026
53b7f77
Update riskgate.js
pakeko78 Feb 19, 2026
548d8f4
Update index.js
pakeko78 Feb 19, 2026
a4b7c82
Update tokens.js
pakeko78 Feb 19, 2026
8503aea
Update analyst.js
pakeko78 Feb 19, 2026
a8def63
Update agentScout.js
pakeko78 Feb 19, 2026
2583adf
Update README.md
pakeko78 Feb 19, 2026
573dd76
Update README.md
pakeko78 Feb 19, 2026
0276c70
Create .keep
pakeko78 Feb 19, 2026
756791f
Add files via upload
pakeko78 Feb 19, 2026
e97fd5c
Update README.md
pakeko78 Feb 19, 2026
0eec433
Update SKILL.md
pakeko78 Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# ===== SOLANA =====
SOL_PRIVATE_KEY=
SOL_RPC=https://api.mainnet-beta.solana.com
JUP_API_KEY=

# ===== EVM =====
EVM_PRIVATE_KEY=0x...
EVM_RPC=https://mainnet.base.org
EVM_CHAIN=base
OX_API_KEY=

# ===== GROQ =====
GROQ_API_KEY=
GROQ_MODEL=llama-3.1-8b-instant
27 changes: 1 addition & 26 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
.nvmrc
stores
node_modules
ui/**/node_modules
ui/**/dist
ui/**/dist-ssr

# IDE / OS noise
.idea/
.env
.DS_Store

# Test artifacts
test-results/

# Local planning / scratch (intentionally untracked)
progress.md

# Local chain/node data, configs, secrets (intentionally untracked)
onchain/

# Rust/Solana build artifacts (may include generated keypairs)
target/
**/target/

.claude
.codex
training/
llama.cpp/
1,129 changes: 164 additions & 965 deletions README.md

Large diffs are not rendered by default.

1,860 changes: 112 additions & 1,748 deletions SKILL.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/.keep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Binary file added assets/proof1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/proof2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/proof3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/proof4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
186 changes: 186 additions & 0 deletions cli.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
import readline from "readline";
import bs58 from "bs58";
import { Keypair } from "@solana/web3.js";
import { ethers } from "ethers";

const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const ask = (q) => new Promise((res) => rl.question(q, (ans) => res(ans.trim())));

let BASE_URL = process.env.CLI_BASE_URL || "http://127.0.0.1:3000";
let API_KEY = process.env.API_KEY || "";

function mask(v) {
if (!v) return "(empty)";
return "********";
}

async function api(path, { method = "GET", body } = {}) {
const headers = { "content-type": "application/json" };
if (API_KEY) headers["x-api-key"] = API_KEY;

try {
const r = await fetch(`${BASE_URL}${path}`, {
method,
headers,
body: body ? JSON.stringify(body) : undefined
});
const j = await r.json().catch(() => ({}));
return { ok: r.ok, status: r.status, data: j };
} catch (e) {
return {
ok: false,
status: 0,
data: {
error: "fetch_failed",
message: String(e?.message || e),
hint: "Server belum jalan atau BASE_URL salah. Jalankan: npm start"
}
};
}
}

// local wallet generators (no server needed)
function genSolLocal() {
const kp = Keypair.generate();
return { address: kp.publicKey.toBase58(), secretBase58: bs58.encode(kp.secretKey) };
}

function genEvmLocal() {
const w = ethers.Wallet.createRandom();
return { address: w.address, privateKey: w.privateKey };
}

async function menu() {
console.log("\n=== IntercomSwap ProMax β€” CLI ===");
console.log(`Base URL : ${BASE_URL}`);
console.log(`API Key : ${mask(API_KEY)}\n`);

console.log("[1] Health");
console.log("[2] Set API Key (optional)");
console.log("[3] Generate SOL Wallet (LOCAL)");
console.log("[4] Set SOL Wallet to Server (paste secret)");
console.log("[5] SOL Status (server)");

console.log("\n[6] Generate EVM Wallet (LOCAL)");
console.log("[7] Set EVM Wallet to Server (paste privateKey)");
console.log("[8] EVM Status (server)");

console.log("\n[9] Token Track (Dexscreener)");
console.log("[10] Token Analyze (Risk Gate)");
console.log("[11] Agent Analyze (Detect β†’ Risk β†’ Autofill)");

console.log("\n[12] Watchlist Add");
console.log("[13] Watchlist List");
console.log("[14] Watchlist Remove");

console.log("\n[15] Change Base URL");
console.log("[0] Exit\n");
}

async function run() {
while (true) {
await menu();
const pick = await ask("Choose: ");

if (pick === "0") break;

if (pick === "1") {
console.log(await api("/api/health"));
continue;
}

if (pick === "2") {
API_KEY = await ask("API Key: ");
console.log("OK (masked).");
continue;
}

if (pick === "3") {
const w = genSolLocal();
console.log("\nβœ… SOL Wallet Generated (LOCAL)");
console.log("Address:", w.address);
console.log("Secret (base58) β€” simpan baik-baik:");
console.log(w.secretBase58);
continue;
}

if (pick === "4") {
const secret = await ask("Paste SOL secret (base58 / JSON array): ");
console.log(await api("/api/sol/setup", { method: "POST", body: { secret } }));
continue;
}

if (pick === "5") {
console.log(await api("/api/sol/status"));
continue;
}

if (pick === "6") {
const w = genEvmLocal();
console.log("\nβœ… EVM Wallet Generated (LOCAL)");
console.log("Address:", w.address);
console.log("PrivateKey β€” simpan baik-baik:");
console.log(w.privateKey);
continue;
}

if (pick === "7") {
const privateKey = await ask("Paste EVM privateKey (0x...): ");
console.log(await api("/api/evm/setup", { method: "POST", body: { privateKey } }));
continue;
}

if (pick === "8") {
console.log(await api("/api/evm/status"));
continue;
}

if (pick === "9") {
const address = await ask("Token address/mint: ");
console.log(await api(`/api/token/track?address=${encodeURIComponent(address)}`));
continue;
}

if (pick === "10") {
const address = await ask("Token address/mint: ");
console.log(await api(`/api/token/analyze?address=${encodeURIComponent(address)}`));
continue;
}

if (pick === "11") {
const text = await ask("Prompt (ex: swap 0.01 SOL to USDC slippage 100 bps): ");
console.log(await api("/api/agent/analyze", { method: "POST", body: { text } }));
continue;
}

if (pick === "12") {
const address = await ask("Address/mint: ");
const note = await ask("Note (optional): ");
console.log(await api("/api/watchlist/add", { method: "POST", body: { address, note } }));
continue;
}

if (pick === "13") {
console.log(await api("/api/watchlist"));
continue;
}

if (pick === "14") {
const address = await ask("Address/mint: ");
console.log(await api("/api/watchlist/remove", { method: "POST", body: { address } }));
continue;
}

if (pick === "15") {
BASE_URL = await ask("New BASE_URL (e.g. http://127.0.0.1:3000): ");
console.log("OK.");
continue;
}

console.log("Unknown menu.");
}

rl.close();
}

run();
Loading