@agentxv2/gateway 0.1.1

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 (175) hide show
  1. package/.env.example +53 -0
  2. package/db/migrations/001_init.sql +117 -0
  3. package/db/migrations/002_agents.sql +20 -0
  4. package/db/migrations/003_a2a_results.sql +23 -0
  5. package/deploy/.env.deploy.example +23 -0
  6. package/deploy/add_swap_build.py +45 -0
  7. package/deploy/build_and_deploy.py +110 -0
  8. package/deploy/build_deploy_a2a.py +190 -0
  9. package/deploy/build_no_lint.py +52 -0
  10. package/deploy/build_on_fe.py +86 -0
  11. package/deploy/build_on_gw.py +98 -0
  12. package/deploy/build_prod.py +54 -0
  13. package/deploy/check_bal.py +31 -0
  14. package/deploy/check_code.py +47 -0
  15. package/deploy/check_deploy.sh +20 -0
  16. package/deploy/check_docs.py +16 -0
  17. package/deploy/check_frontend.py +42 -0
  18. package/deploy/check_frontend2.py +35 -0
  19. package/deploy/check_pks.py +34 -0
  20. package/deploy/check_status.py +32 -0
  21. package/deploy/check_v2.py +8 -0
  22. package/deploy/clean_install.py +28 -0
  23. package/deploy/deploy_a2a.py +58 -0
  24. package/deploy/deploy_a2a.sh +33 -0
  25. package/deploy/deploy_a2a_bg.sh +40 -0
  26. package/deploy/deploy_a2a_v2.py +151 -0
  27. package/deploy/deploy_a2a_v2.sh +36 -0
  28. package/deploy/deploy_bin.py +64 -0
  29. package/deploy/deploy_config.py +34 -0
  30. package/deploy/deploy_final.py +42 -0
  31. package/deploy/deploy_frontend.py +108 -0
  32. package/deploy/deploy_mcp.py +108 -0
  33. package/deploy/deploy_now.py +49 -0
  34. package/deploy/deploy_push_all.py +128 -0
  35. package/deploy/deploy_script.py +64 -0
  36. package/deploy/deploy_sep_a2a.sh +18 -0
  37. package/deploy/dev_mode.py +51 -0
  38. package/deploy/diag.py +12 -0
  39. package/deploy/diff_test.py +22 -0
  40. package/deploy/final_check.py +33 -0
  41. package/deploy/final_deploy.py +50 -0
  42. package/deploy/final_fix.py +54 -0
  43. package/deploy/final_push.py +114 -0
  44. package/deploy/find_frontend.py +38 -0
  45. package/deploy/fix_a2a.py +43 -0
  46. package/deploy/fix_and_build.py +77 -0
  47. package/deploy/fix_and_verify.py +56 -0
  48. package/deploy/fix_build.py +51 -0
  49. package/deploy/forge_deploy.py +67 -0
  50. package/deploy/full_push.py +101 -0
  51. package/deploy/full_push2.py +106 -0
  52. package/deploy/go_prod.py +59 -0
  53. package/deploy/gw_deploy.py +133 -0
  54. package/deploy/gw_final.py +206 -0
  55. package/deploy/gw_restart.py +28 -0
  56. package/deploy/gw_status.py +18 -0
  57. package/deploy/inline_build.py +99 -0
  58. package/deploy/one_shot.py +84 -0
  59. package/deploy/ox_deploy.py +32 -0
  60. package/deploy/pg_setup.py +36 -0
  61. package/deploy/prod_deploy.py +126 -0
  62. package/deploy/prod_final.py +140 -0
  63. package/deploy/prod_go.py +61 -0
  64. package/deploy/prod_one_shot.py +139 -0
  65. package/deploy/prod_setup.sh +62 -0
  66. package/deploy/prod_v2.py +91 -0
  67. package/deploy/prod_v3.py +103 -0
  68. package/deploy/push_docs.py +93 -0
  69. package/deploy/push_mcp.py +66 -0
  70. package/deploy/push_mcp_doc.py +28 -0
  71. package/deploy/push_v063.py +80 -0
  72. package/deploy/push_v2.py +71 -0
  73. package/deploy/qcheck.py +13 -0
  74. package/deploy/qcheck2.py +18 -0
  75. package/deploy/quick_check.py +8 -0
  76. package/deploy/rebuild.py +47 -0
  77. package/deploy/rebuild_frontend.py +44 -0
  78. package/deploy/restart.py +28 -0
  79. package/deploy/restore_frontend.py +42 -0
  80. package/deploy/restore_frontend2.py +41 -0
  81. package/deploy/restore_gateway.py +34 -0
  82. package/deploy/restore_quick.py +33 -0
  83. package/deploy/run_bash.py +19 -0
  84. package/deploy/run_sep.py +20 -0
  85. package/deploy/sdk_upgrade.py +50 -0
  86. package/deploy/server_prepare.py +41 -0
  87. package/deploy/server_setup.py +41 -0
  88. package/deploy/ssh_check.py +14 -0
  89. package/deploy/ssh_push.py +24 -0
  90. package/deploy/start_deploy.py +35 -0
  91. package/deploy/start_frontend.py +12 -0
  92. package/deploy/start_v2.py +29 -0
  93. package/deploy/stat.py +18 -0
  94. package/deploy/tail_log.py +11 -0
  95. package/deploy/update_env.py +32 -0
  96. package/deploy/upload_and_start.py +107 -0
  97. package/deploy/verify_a2a.py +13 -0
  98. package/deploy/verify_mcp.py +37 -0
  99. package/deploy/verify_sdk.py +21 -0
  100. package/dist/config.d.ts +26 -0
  101. package/dist/config.js +41 -0
  102. package/dist/config.js.map +1 -0
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.js +149 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/lib/crypto.d.ts +2 -0
  107. package/dist/lib/crypto.js +43 -0
  108. package/dist/lib/crypto.js.map +1 -0
  109. package/dist/lib/db.d.ts +3 -0
  110. package/dist/lib/db.js +26 -0
  111. package/dist/lib/db.js.map +1 -0
  112. package/dist/lib/ethers-utils.d.ts +60 -0
  113. package/dist/lib/ethers-utils.js +186 -0
  114. package/dist/lib/ethers-utils.js.map +1 -0
  115. package/dist/middleware/adminAuth.d.ts +2 -0
  116. package/dist/middleware/adminAuth.js +31 -0
  117. package/dist/middleware/adminAuth.js.map +1 -0
  118. package/dist/middleware/auth.d.ts +22 -0
  119. package/dist/middleware/auth.js +192 -0
  120. package/dist/middleware/auth.js.map +1 -0
  121. package/dist/middleware/error-handler.d.ts +36 -0
  122. package/dist/middleware/error-handler.js +100 -0
  123. package/dist/middleware/error-handler.js.map +1 -0
  124. package/dist/middleware/rate-limiter.d.ts +5 -0
  125. package/dist/middleware/rate-limiter.js +107 -0
  126. package/dist/middleware/rate-limiter.js.map +1 -0
  127. package/dist/routes/a2a.d.ts +2 -0
  128. package/dist/routes/a2a.js +84 -0
  129. package/dist/routes/a2a.js.map +1 -0
  130. package/dist/routes/admin.d.ts +2 -0
  131. package/dist/routes/admin.js +180 -0
  132. package/dist/routes/admin.js.map +1 -0
  133. package/dist/routes/agents.d.ts +2 -0
  134. package/dist/routes/agents.js +43 -0
  135. package/dist/routes/agents.js.map +1 -0
  136. package/dist/routes/chat.d.ts +2 -0
  137. package/dist/routes/chat.js +183 -0
  138. package/dist/routes/chat.js.map +1 -0
  139. package/dist/routes/history.d.ts +2 -0
  140. package/dist/routes/history.js +92 -0
  141. package/dist/routes/history.js.map +1 -0
  142. package/dist/routes/mcp.d.ts +13 -0
  143. package/dist/routes/mcp.js +513 -0
  144. package/dist/routes/mcp.js.map +1 -0
  145. package/dist/routes/tenant.d.ts +2 -0
  146. package/dist/routes/tenant.js +154 -0
  147. package/dist/routes/tenant.js.map +1 -0
  148. package/dist/services/a2a-worker.d.ts +7 -0
  149. package/dist/services/a2a-worker.js +406 -0
  150. package/dist/services/a2a-worker.js.map +1 -0
  151. package/dist/services/agent-indexer.d.ts +4 -0
  152. package/dist/services/agent-indexer.js +124 -0
  153. package/dist/services/agent-indexer.js.map +1 -0
  154. package/e2e_wallet.js +175 -0
  155. package/ecosystem.config.js +17 -0
  156. package/package.json +33 -0
  157. package/src/config.ts +47 -0
  158. package/src/index.ts +143 -0
  159. package/src/lib/crypto.ts +44 -0
  160. package/src/lib/db.ts +25 -0
  161. package/src/lib/ethers-utils.ts +229 -0
  162. package/src/middleware/adminAuth.ts +34 -0
  163. package/src/middleware/auth.ts +244 -0
  164. package/src/middleware/error-handler.ts +109 -0
  165. package/src/middleware/rate-limiter.ts +115 -0
  166. package/src/routes/a2a.ts +97 -0
  167. package/src/routes/admin.ts +219 -0
  168. package/src/routes/agents.ts +52 -0
  169. package/src/routes/chat.ts +219 -0
  170. package/src/routes/history.ts +114 -0
  171. package/src/routes/mcp.ts +567 -0
  172. package/src/routes/tenant.ts +196 -0
  173. package/src/services/a2a-worker.ts +486 -0
  174. package/src/services/agent-indexer.ts +127 -0
  175. package/tsconfig.json +18 -0
@@ -0,0 +1,20 @@
1
+ import paramiko
2
+
3
+ transport = paramiko.Transport(('43.156.78.59', 22))
4
+ transport.connect(username='ubuntu', password='Asdf1234!')
5
+ sftp = paramiko.SFTPClient.from_transport(transport)
6
+ sftp.put(r'c:\Users\apply\Downloads\code\agentx\extracted\Agentx\gateway\deploy\deploy_sep_a2a.sh', '/tmp/deploy_sep_a2a.sh')
7
+ sftp.close()
8
+ transport.close()
9
+
10
+ c = paramiko.SSHClient()
11
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
12
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=30)
13
+ stdin, stdout, stderr = c.exec_command('chmod +x /tmp/deploy_sep_a2a.sh && bash /tmp/deploy_sep_a2a.sh 2>&1', timeout=600)
14
+ out = stdout.read().decode()
15
+ err = stderr.read().decode()
16
+ ec = stdout.channel.recv_exit_status()
17
+ print(out[-2000:])
18
+ if err: print("E:", err[-500:])
19
+ print(f"\nExit code: {ec}")
20
+ c.close()
@@ -0,0 +1,50 @@
1
+ import paramiko, base64, time
2
+
3
+ c = paramiko.SSHClient()
4
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=30)
6
+
7
+ def run(cmd, timeout=600):
8
+ print(f"> {cmd[:120]}")
9
+ stdin, stdout, stderr = c.exec_command(cmd, timeout=timeout)
10
+ out = stdout.read().decode()
11
+ err = stderr.read().decode()
12
+ ec = stdout.channel.recv_exit_status()
13
+ if out: print(out[-400:])
14
+ if err: print("E:", err[-300:])
15
+ return ec, out, err
16
+
17
+ # 1. Update package.json version to 0.6.2
18
+ with open(r'c:\Users\apply\Downloads\code\agentx\extracted\Agentx\frontend\package.json', 'r') as f:
19
+ pkg = f.read()
20
+ b64 = base64.b64encode(pkg.encode()).decode()
21
+ run(f"echo '{b64}' | base64 -d > /home/ubuntu/agentx-platform/package.json && echo 'pkg updated'")
22
+
23
+ # 2. Kill current server
24
+ run("fuser -k 8080/tcp 2>/dev/null; pkill -f 'next' 2>/dev/null; sleep 2; echo cleaned")
25
+
26
+ # 3. Install updated SDK
27
+ print("\n=== npm install @agentxv2/sdk@0.6.2 ===")
28
+ run("cd /home/ubuntu/agentx-platform && npm install @agentxv2/sdk@0.6.2 2>&1 | tail -5", timeout=120)
29
+
30
+ # 4. Build
31
+ print("\n=== next build ===")
32
+ ec, out, err = run(
33
+ "cd /home/ubuntu/agentx-platform && NODE_OPTIONS='--max-old-space-size=1536' npx next build 2>&1 | tail -20",
34
+ timeout=600
35
+ )
36
+ print(f"\nBuild exit: {ec}")
37
+ if ec != 0:
38
+ print("BUILD FAILED")
39
+ c.close()
40
+ exit(1)
41
+
42
+ # 5. Start
43
+ print("\n=== Start ===")
44
+ run("cd /home/ubuntu/agentx-platform && nohup npx next start -p 8080 > /tmp/fe-062.log 2>&1 &", timeout=5)
45
+ time.sleep(5)
46
+ run("ss -tlnp | grep 8080", timeout=10)
47
+ run("curl -sI http://localhost:8080/ 2>&1 | head -3", timeout=10)
48
+
49
+ c.close()
50
+ print("\n✅ Done")
@@ -0,0 +1,41 @@
1
+ import paramiko
2
+ import os, sys
3
+
4
+ host = '101.33.109.117'
5
+ user = 'ubuntu'
6
+ password = 'Asdf1234!'
7
+
8
+ client = paramiko.SSHClient()
9
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
10
+ client.connect(host, username=user, password=password)
11
+
12
+ def run(cmd):
13
+ print(f"> {cmd}")
14
+ stdin, stdout, stderr = client.exec_command(cmd)
15
+ out = stdout.read().decode()
16
+ err = stderr.read().decode()
17
+ ec = stdout.channel.recv_exit_status()
18
+ if out: print(out)
19
+ if err: print("ERR:", err[:500])
20
+ return ec, out, err
21
+
22
+ # 1. Install PM2
23
+ print("\n=== Installing PM2 ===")
24
+ run("sudo npm install -g pm2 2>&1")
25
+
26
+ # 2. Create PostgreSQL user + database
27
+ print("\n=== Setting up PostgreSQL ===")
28
+ run("sudo -u postgres psql -c \"CREATE USER agentx WITH PASSWORD 'AgentX2024!';\" 2>&1 || echo 'user may exist'")
29
+ run("sudo -u postgres psql -c \"CREATE DATABASE agentx_gateway OWNER agentx;\" 2>&1 || echo 'db may exist'")
30
+ run("sudo -u postgres psql -c \"GRANT ALL PRIVILEGES ON DATABASE agentx_gateway TO agentx;\" 2>&1")
31
+
32
+ # 3. Create app directory
33
+ print("\n=== Creating directories ===")
34
+ run("mkdir -p ~/agentx-gateway && echo ok")
35
+
36
+ # 4. Generate secrets
37
+ print("\n=== Generating secrets ===")
38
+ run("openssl rand -hex 32 > /tmp/jwt_secret.txt && openssl rand -hex 32 > /tmp/master_key.txt && echo 'Secrets generated'")
39
+
40
+ client.close()
41
+ print("\nDone. Server prepared.")
@@ -0,0 +1,41 @@
1
+ import paramiko
2
+ import os
3
+
4
+ host = '101.33.109.117'
5
+ user = 'ubuntu'
6
+ password = 'Asdf1234!'
7
+
8
+ key_dir = r'C:\Users\apply\AppData\Local\Temp\tmpxp9fg0pi'
9
+ with open(os.path.join(key_dir, 'id_rsa.pub')) as f:
10
+ pubkey = f.read().strip()
11
+
12
+ client = paramiko.SSHClient()
13
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
14
+ client.connect(host, username=user, password=password)
15
+
16
+ cmd = f'mkdir -p ~/.ssh && echo "{pubkey}" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
17
+ stdin, stdout, stderr = client.exec_command(cmd)
18
+ stdout.channel.recv_exit_status()
19
+
20
+ stdin, stdout, stderr = client.exec_command(
21
+ 'echo "===OS===" && cat /etc/os-release | head -4 && '
22
+ 'echo "===NODE===" && node -v 2>/dev/null || echo "NO_NODE" && '
23
+ 'echo "===NPM===" && npm -v 2>/dev/null || echo "NO_NPM" && '
24
+ 'echo "===PSQL===" && psql --version 2>/dev/null || echo "NO_PSQL" && '
25
+ 'echo "===REDIS===" && redis-cli --version 2>/dev/null || echo "NO_REDIS" && '
26
+ 'echo "===PM2===" && pm2 -v 2>/dev/null || echo "NO_PM2" && '
27
+ 'echo "===GIT===" && git --version 2>/dev/null || echo "NO_GIT" && '
28
+ 'echo "===DISK===" && df -h / | tail -1 && '
29
+ 'echo "===MEM===" && free -h | head -2 && '
30
+ 'echo "===PORTS===" && ss -tlnp 2>/dev/null | head -20 && '
31
+ 'echo "===DOCKER===" && docker --version 2>/dev/null || echo "NO_DOCKER" && '
32
+ 'echo "===UFW===" && sudo ufw status 2>/dev/null || echo "NO_UFW"'
33
+ )
34
+ out = stdout.read().decode()
35
+ err = stderr.read().decode()
36
+
37
+ client.close()
38
+
39
+ print(out)
40
+ if err:
41
+ print("STDERR:", err)
@@ -0,0 +1,14 @@
1
+ import paramiko
2
+
3
+ c = paramiko.SSHClient()
4
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=15)
6
+
7
+ # Check SSH keys and git config
8
+ stdin, stdout, stderr = c.exec_command(
9
+ "ls -la ~/.ssh/ 2>/dev/null; echo '===GIT==='; git config --global -l 2>/dev/null; "
10
+ "echo '===SSH_TEST==='; ssh -T git@github.com 2>&1 | head -3"
11
+ )
12
+ print(stdout.read().decode())
13
+
14
+ c.close()
@@ -0,0 +1,24 @@
1
+ import paramiko
2
+
3
+ c = paramiko.SSHClient()
4
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=15)
6
+
7
+ push = '''#!/bin/bash
8
+ set -e
9
+ cd /tmp/agentx-push
10
+ git remote set-url origin git@github.com:sftgroup/Agentx.git
11
+ git push origin main 2>&1
12
+ echo "PUSH_OK"
13
+ '''
14
+
15
+ import base64
16
+ b64 = base64.b64encode(push.encode()).decode()
17
+ stdin, stdout, stderr = c.exec_command(
18
+ f"echo '{b64}' | base64 -d | bash 2>&1"
19
+ )
20
+ out = stdout.read().decode()
21
+ err = stderr.read().decode()
22
+ print(out)
23
+ if err: print("E:", err[-300:])
24
+ c.close()
@@ -0,0 +1,35 @@
1
+ import paramiko
2
+
3
+ transport = paramiko.Transport(('43.156.78.59', 22))
4
+ transport.connect(username='ubuntu', password='Asdf1234!')
5
+ sftp = paramiko.SFTPClient.from_transport(transport)
6
+ sftp.put(r'c:\Users\apply\Downloads\code\agentx\extracted\Agentx\gateway\deploy\deploy_a2a_bg.sh', '/tmp/deploy_a2a_bg.sh')
7
+ sftp.close()
8
+ transport.close()
9
+
10
+ c = paramiko.SSHClient()
11
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
12
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=15)
13
+
14
+ # First test cast abi-encode
15
+ stdin, stdout, stderr = c.exec_command(
16
+ "export PATH=$HOME/.foundry/bin:$PATH && "
17
+ "cast abi-encode 'constructor(address)' 0xe94ad380d3F8d08a7590eda0C84f354a93F96e5F 2>&1",
18
+ timeout=15
19
+ )
20
+ out = stdout.read().decode().strip()
21
+ err = stderr.read().decode().strip()
22
+ print(f"cast abi-encode test: {out}")
23
+ if err: print(f"err: {err}")
24
+
25
+ # Start deploy in background
26
+ print("\n=== Starting background deploy ===")
27
+ stdin, stdout, stderr = c.exec_command(
28
+ "chmod +x /tmp/deploy_a2a_bg.sh && nohup bash /tmp/deploy_a2a_bg.sh &>/dev/null & echo 'PID='$!",
29
+ timeout=10
30
+ )
31
+ print(stdout.read().decode().strip())
32
+
33
+ c.close()
34
+ print("\nDeploy running in background on server...")
35
+ print("Will check results in a moment")
@@ -0,0 +1,12 @@
1
+ import paramiko
2
+
3
+ host_f = '43.156.78.59'
4
+ c = paramiko.SSHClient()
5
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
6
+ c.connect(host_f, username='ubuntu', password='Asdf1234!', timeout=10)
7
+
8
+ ch = c.get_transport().open_session()
9
+ ch.exec_command("cd ~/agentx-platform && NODE_OPTIONS='--max-old-space-size=512' nohup npx next dev -p 8080 -H 0.0.0.0 > /tmp/n8080.log 2>&1 &")
10
+ ch.recv_exit_status()
11
+ print("Started next dev")
12
+ c.close()
@@ -0,0 +1,29 @@
1
+ import paramiko
2
+
3
+ transport = paramiko.Transport(('43.156.78.59', 22))
4
+ transport.connect(username='ubuntu', password='Asdf1234!')
5
+ sftp = paramiko.SFTPClient.from_transport(transport)
6
+ sftp.put(r'c:\Users\apply\Downloads\code\agentx\extracted\Agentx\gateway\deploy\deploy_a2a_v2.sh', '/tmp/deploy_a2a_v2.sh')
7
+ sftp.close()
8
+ transport.close()
9
+
10
+ c = paramiko.SSHClient()
11
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
12
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=15)
13
+
14
+ # Check OxaChain balance
15
+ stdin, stdout, stderr = c.exec_command(
16
+ "export PATH=$HOME/.foundry/bin:$PATH && "
17
+ "cast balance 0x4F7744F97AaC9Ad7f0a67de75b149aDb87464103 --rpc-url http://43.156.99.215:18545 2>&1",
18
+ timeout=15
19
+ )
20
+ ox_bal = stdout.read().decode().strip()
21
+ print(f"OxaChain L1 balance: {ox_bal} wei")
22
+
23
+ # Start deploy
24
+ stdin, stdout, stderr = c.exec_command(
25
+ "chmod +x /tmp/deploy_a2a_v2.sh && nohup bash /tmp/deploy_a2a_v2.sh &>/dev/null & echo 'PID='$!",
26
+ timeout=10
27
+ )
28
+ print(stdout.read().decode().strip())
29
+ c.close()
package/deploy/stat.py ADDED
@@ -0,0 +1,18 @@
1
+ import paramiko
2
+ c = paramiko.SSHClient()
3
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
4
+ c.connect('43.156.225.164', username='ubuntu', password='Asdf1234!', timeout=10)
5
+
6
+ stdin, stdout, stderr = c.exec_command("tail -8 /tmp/agentx-deploy.log 2>/dev/null")
7
+ print("LOG:", stdout.read().decode()[:500])
8
+
9
+ stdin, stdout, stderr = c.exec_command("ps aux | grep -v grep | grep -E 'next|npm' | head -3")
10
+ print("PROC:", stdout.read().decode()[:300])
11
+
12
+ stdin, stdout, stderr = c.exec_command("ss -tlnp | grep 3000 || echo NO_PORT")
13
+ print("PORT:", stdout.read().decode()[:200])
14
+
15
+ stdin, stdout, stderr = c.exec_command("ls /home/ubuntu/agentx-platform/.next/BUILD_ID 2>/dev/null && echo BUILD_OK || echo NO_BUILD")
16
+ print("BUILD:", stdout.read().decode()[:200])
17
+
18
+ c.close()
@@ -0,0 +1,11 @@
1
+ import paramiko, time
2
+ time.sleep(30)
3
+ c = paramiko.SSHClient()
4
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=10)
6
+ stdin, stdout, stderr = c.exec_command('cat /tmp/a2a_deploy.log 2>/dev/null || echo NO_LOG')
7
+ out = stdout.read().decode()
8
+ err = stderr.read().decode()
9
+ print(out)
10
+ if err: print("E:", err[-300:])
11
+ c.close()
@@ -0,0 +1,32 @@
1
+ import paramiko
2
+ import base64
3
+ import time
4
+
5
+ c = paramiko.SSHClient()
6
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
7
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=30)
8
+
9
+ # Upload updated .env.production
10
+ with open(r'c:\Users\apply\Downloads\code\agentx\extracted\Agentx\frontend\.env.production', 'r') as f:
11
+ env = f.read()
12
+ b64 = base64.b64encode(env.encode()).decode()
13
+
14
+ stdin, stdout, stderr = c.exec_command(
15
+ f"echo '{b64}' | base64 -d > /home/ubuntu/agentx-platform/.env.production && echo 'env updated' && wc -c /home/ubuntu/agentx-platform/.env.production"
16
+ )
17
+ print(stdout.read().decode().strip())
18
+
19
+ # Verify the A2A address in .env
20
+ stdin, stdout, stderr = c.exec_command(
21
+ "grep A2A_PROTOCOL /home/ubuntu/agentx-platform/.env.production"
22
+ )
23
+ print(stdout.read().decode().strip())
24
+
25
+ # Check balance after deploy
26
+ stdin, stdout, stderr = c.exec_command(
27
+ "export PATH=$HOME/.foundry/bin:$PATH && cast balance 0x4F7744F97AaC9Ad7f0a67de75b149aDb87464103 --rpc-url http://43.156.99.215:18545 2>&1"
28
+ )
29
+ print(f"OxaChain balance: {stdout.read().decode().strip()}")
30
+
31
+ c.close()
32
+ print("\nNow building...")
@@ -0,0 +1,107 @@
1
+ import paramiko
2
+ import os, sys
3
+
4
+ host = '101.33.109.117'
5
+ user = 'ubuntu'
6
+ password = 'Asdf1234!'
7
+
8
+ gateway_src = r'c:\Users\apply\Downloads\code\agentx\extracted\Agentx\gateway'
9
+
10
+ client = paramiko.SSHClient()
11
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
12
+ client.connect(host, username=user, password=password)
13
+
14
+ sftp = client.open_sftp()
15
+
16
+ def upload_dir(local_dir, remote_dir):
17
+ for root, dirs, files in os.walk(local_dir):
18
+ # Skip node_modules, dist, .git
19
+ dirs[:] = [d for d in dirs if d not in ('node_modules', 'dist', '.git', '__pycache__', 'deploy')]
20
+
21
+ rel_path = os.path.relpath(root, local_dir)
22
+ remote_path = os.path.join(remote_dir, rel_path).replace('\\', '/')
23
+
24
+ # Create remote directory
25
+ try:
26
+ sftp.stat(remote_path)
27
+ except FileNotFoundError:
28
+ try:
29
+ sftp.mkdir(remote_path)
30
+ except:
31
+ pass
32
+
33
+ for file in files:
34
+ local_file = os.path.join(root, file)
35
+ remote_file = os.path.join(remote_path, file).replace('\\', '/')
36
+ print(f" Uploading: {rel_path}/{file}")
37
+ try:
38
+ sftp.put(local_file, remote_file)
39
+ except Exception as e:
40
+ print(f" ERROR: {e}")
41
+
42
+ print("Uploading gateway source code...")
43
+ remote_dir = '/home/ubuntu/agentx-gateway'
44
+ upload_dir(gateway_src, remote_dir)
45
+
46
+ sftp.close()
47
+
48
+ # Now run setup commands
49
+ def run(cmd):
50
+ print(f"> {cmd}")
51
+ stdin, stdout, stderr = client.exec_command(cmd)
52
+ out = stdout.read().decode()
53
+ err = stderr.read().decode()
54
+ stdout.channel.recv_exit_status()
55
+ if out: print(out)
56
+ if err: print("ERR:", err[:300])
57
+ return out
58
+
59
+ # Read secrets
60
+ print("\n=== Reading secrets ===")
61
+ stdin, stdout, stderr = client.exec_command("cat /tmp/jwt_secret.txt")
62
+ jwt_secret = stdout.read().decode().strip()
63
+ stdin, stdout, stderr = client.exec_command("cat /tmp/master_key.txt")
64
+ master_key = stdout.read().decode().strip()
65
+
66
+ # Create .env
67
+ env_content = f"""PORT=3090
68
+ NODE_ENV=production
69
+ DATABASE_URL=postgresql://agentx:AgentX2024!@localhost:5432/agentx_gateway
70
+ REDIS_URL=redis://localhost:6379
71
+ JWT_SECRET={jwt_secret}
72
+ MASTER_ENCRYPTION_KEY={master_key}
73
+ SESSION_TTL_SEC=86400
74
+ CORS_ORIGIN=*
75
+ """
76
+ print("\n=== Writing .env ===")
77
+ stdin, stdout, stderr = client.exec_command(f"cat > ~/agentx-gateway/.env << 'ENVEOF'\n{env_content}\nENVEOF")
78
+ stdout.channel.recv_exit_status()
79
+ print("Done")
80
+
81
+ # Run migration
82
+ print("\n=== Running database migration ===")
83
+ run("sudo -u postgres psql -d agentx_gateway -f ~/agentx-gateway/db/migrations/001_init.sql")
84
+
85
+ # Install npm dependencies
86
+ print("\n=== Installing npm dependencies ===")
87
+ run("cd ~/agentx-gateway && npm install --production 2>&1")
88
+
89
+ # Build TypeScript
90
+ print("\n=== Building ===")
91
+ run("cd ~/agentx-gateway && npx tsc 2>&1")
92
+
93
+ # Create logs directory
94
+ run("mkdir -p ~/agentx-gateway/logs")
95
+
96
+ # Start with PM2
97
+ print("\n=== Starting with PM2 ===")
98
+ run("cd ~/agentx-gateway && pm2 start ecosystem.config.js 2>&1")
99
+ run("pm2 save 2>&1")
100
+
101
+ # Verify
102
+ print("\n=== Verifying ===")
103
+ run("sleep 2 && curl -s http://localhost:3090/api/v1/health 2>&1")
104
+ run("pm2 status 2>&1")
105
+
106
+ client.close()
107
+ print("\n=== Deployment Complete ===")
@@ -0,0 +1,13 @@
1
+ import paramiko, base64
2
+ c = paramiko.SSHClient()
3
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
4
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=10)
5
+
6
+ script = 'export PATH=$HOME/.foundry/bin:$PATH; cast call 0xeA90077ff0B01c7D43472f42ae5bC89d06760D5f "getUserTasks(address)(uint256[])" 0x4F7744F97AaC9Ad7f0a67de75b149aDb87464103 --rpc-url https://ethereum-sepolia-rpc.publicnode.com 2>&1; echo "---"; cast call 0xeA90077ff0B01c7D43472f42ae5bC89d06760D5f "getAllSkills()(tuple(uint256,string,string,string,string,string[],uint256,bool,uint256)[])" --rpc-url https://ethereum-sepolia-rpc.publicnode.com 2>&1 | head -3'
7
+ b64 = base64.b64encode(script.encode()).decode()
8
+ stdin, stdout, stderr = c.exec_command(f'echo "{b64}"|base64 -d|bash 2>&1')
9
+ out = stdout.read().decode()
10
+ err = stderr.read().decode()
11
+ print(out)
12
+ if err: print("E:", err[-500:])
13
+ c.close()
@@ -0,0 +1,37 @@
1
+ import paramiko
2
+
3
+ c = paramiko.SSHClient()
4
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5
+ c.connect('43.156.225.164', username='ubuntu', password='Asdf1234!', timeout=10)
6
+
7
+ # Test tools/list
8
+ import json
9
+ stdin, stdout, stderr = c.exec_command(
10
+ 'curl -s -X POST http://localhost:3090/mcp -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","id":1,"method":"tools/list"}\''
11
+ )
12
+ data = json.loads(stdout.read().decode())
13
+ tools = data.get('result', {}).get('tools', [])
14
+ print(f"MCP tools/list: {len(tools)} tools")
15
+ for t in tools[:5]:
16
+ print(f" - {t['name']}")
17
+ print(f" - ... ({len(tools)-5} more)")
18
+
19
+ # Test tools/call
20
+ stdin, stdout, stderr = c.exec_command(
21
+ 'curl -s -X POST http://localhost:3090/mcp -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"agentx_gateway_health","arguments":{}}}\''
22
+ )
23
+ data = json.loads(stdout.read().decode())
24
+ content = data.get('result', {}).get('content', [])
25
+ if content:
26
+ print(f"\nMCP tools/call (health): {content[0].get('text', '')[:200]}")
27
+ else:
28
+ print(f"\nMCP tools/call result: {data}")
29
+
30
+ # Test initialize
31
+ stdin, stdout, stderr = c.exec_command(
32
+ 'curl -s -X POST http://localhost:3090/mcp -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","id":3,"method":"initialize","params":{"protocolVersion":"2024-11-05"}}\''
33
+ )
34
+ data = json.loads(stdout.read().decode())
35
+ print(f"\nMCP initialize: server={data.get('result',{}).get('serverInfo',{}).get('name')}")
36
+
37
+ c.close()
@@ -0,0 +1,21 @@
1
+ import paramiko
2
+
3
+ c = paramiko.SSHClient()
4
+ c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5
+ c.connect('43.156.78.59', username='ubuntu', password='Asdf1234!', timeout=10)
6
+
7
+ # Check port
8
+ stdin, stdout, stderr = c.exec_command("ss -tlnp | grep 8080")
9
+ print("PORT:", stdout.read().decode().strip())
10
+
11
+ # Check SDK version
12
+ stdin, stdout, stderr = c.exec_command(
13
+ "cat /home/ubuntu/agentx-platform/node_modules/@agentxv2/sdk/package.json | python3 -c \"import sys,json; print(json.load(sys.stdin)['version'])\""
14
+ )
15
+ print("SDK:", stdout.read().decode().strip())
16
+
17
+ # HTTP check
18
+ stdin, stdout, stderr = c.exec_command("curl -sI http://localhost:8080/ 2>&1 | head -2")
19
+ print("HTTP:", stdout.read().decode().strip())
20
+
21
+ c.close()
@@ -0,0 +1,26 @@
1
+ export declare const config: {
2
+ port: number;
3
+ nodeEnv: string;
4
+ databaseUrl: string;
5
+ redisUrl: string;
6
+ jwtSecret: string;
7
+ masterEncryptionKey: string;
8
+ sessionTtlSec: number;
9
+ rpcUrl: string;
10
+ rpcUrlOxaChain: string;
11
+ chainId: number;
12
+ chainIdOxaChain: number;
13
+ identityRegistry: string;
14
+ identityRegistryOxaChain: string;
15
+ subscriptionManager: string;
16
+ subscriptionManagerOxaChain: string;
17
+ a2aProtocol: string;
18
+ a2aProtocolOxaChain: string;
19
+ reputationRegistry: string;
20
+ reputationRegistryOxaChain: string;
21
+ configurationRegistry: string;
22
+ configurationRegistryOxaChain: string;
23
+ multiEndpoint: string;
24
+ multiEndpointOxaChain: string;
25
+ a2aWorkerPrivateKey: string;
26
+ };
package/dist/config.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // AgentX Gateway — Configuration
4
+ // ---------------------------------------------------------------------------
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.config = void 0;
10
+ const dotenv_1 = __importDefault(require("dotenv"));
11
+ dotenv_1.default.config();
12
+ exports.config = {
13
+ port: parseInt(process.env.PORT || '3090', 10),
14
+ nodeEnv: process.env.NODE_ENV || 'development',
15
+ databaseUrl: process.env.DATABASE_URL || 'postgresql://localhost:5432/agentx_gateway',
16
+ redisUrl: process.env.REDIS_URL || 'redis://localhost:6379',
17
+ jwtSecret: process.env.JWT_SECRET || 'dev-secret-change-me',
18
+ masterEncryptionKey: process.env.MASTER_ENCRYPTION_KEY || '',
19
+ sessionTtlSec: parseInt(process.env.SESSION_TTL_SEC || '86400', 10),
20
+ // MCP / On-chain read — Dual-chain
21
+ // Sepolia
22
+ rpcUrl: process.env.RPC_URL || 'https://ethereum-sepolia-rpc.publicnode.com',
23
+ rpcUrlOxaChain: process.env.RPC_URL_OXACHAIN || 'https://rpc-oxa.0xainet.top',
24
+ chainId: parseInt(process.env.CHAIN_ID || '11155111', 10),
25
+ chainIdOxaChain: parseInt(process.env.CHAIN_ID_OXACHAIN || '19505', 10),
26
+ identityRegistry: process.env.IDENTITY_REGISTRY || '0xe94ad380d3F8d08a7590eda0C84f354a93F96e5F',
27
+ identityRegistryOxaChain: process.env.IDENTITY_REGISTRY_OXACHAIN || '0xbf5F9db266c8c97E3334466C88597Eb758AfE212',
28
+ subscriptionManager: process.env.SUBSCRIPTION_MANAGER || '0xC15fE80b9d800abb72121F353a6ae6d6E9077E63',
29
+ subscriptionManagerOxaChain: process.env.SUBSCRIPTION_MANAGER_OXACHAIN || '0x019AC9d945467478Dd371CDbD70cb2f325800E6B',
30
+ a2aProtocol: process.env.A2A_PROTOCOL || '0x309C7447d89f3087A9924BB686d88df020F7e9cB',
31
+ a2aProtocolOxaChain: process.env.A2A_PROTOCOL_OXACHAIN || '0x7F42a7dC4A0F3C107664C3750bE1B5B6fa6BEb86',
32
+ reputationRegistry: process.env.REPUTATION_REGISTRY || '0xeb6B410ea71b8d9dA0c96f6A91d35027CE143DC9',
33
+ reputationRegistryOxaChain: process.env.REPUTATION_REGISTRY_OXACHAIN || '0x6a18C2664E1b42063860d864b6448b824d7B843F',
34
+ configurationRegistry: process.env.CONFIGURATION_REGISTRY || '0x68DcE00e4C9077c94BC68016cD14B09557faEA6c',
35
+ configurationRegistryOxaChain: process.env.CONFIGURATION_REGISTRY_OXACHAIN || '0x07280674ccc2898Fd038A9e3C22005CA83ffD2F8',
36
+ multiEndpoint: process.env.MULTI_ENDPOINT || '0xEB5e866f186d4B73F97aa0d70B86f2C6e2e21Cb7',
37
+ multiEndpointOxaChain: process.env.MULTI_ENDPOINT_OXACHAIN || '0xB361d04F49000013FC131D3C59C41c8486C64f8c',
38
+ // A2A Worker wallet (for creating sub-tasks on-chain during multi-agent orchestration)
39
+ a2aWorkerPrivateKey: process.env.A2A_WORKER_PRIVATE_KEY || '',
40
+ };
41
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;;;;;;AAE9E,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEF,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;IAE9C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,4CAA4C;IACrF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,wBAAwB;IAE3D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,sBAAsB;IAC3D,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;IAE5D,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,EAAE,EAAE,CAAC;IAEnE,mCAAmC;IACnC,UAAU;IACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,6CAA6C;IAC5E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,6BAA6B;IAC7E,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU,EAAE,EAAE,CAAC;IACzD,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,EAAE,EAAE,CAAC;IAEvE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,4CAA4C;IAC/F,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,4CAA4C;IAEhH,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,4CAA4C;IACrG,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,4CAA4C;IAEtH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,4CAA4C;IACrF,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4CAA4C;IAEtG,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,4CAA4C;IACnG,0BAA0B,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,4CAA4C;IAEpH,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,4CAA4C;IACzG,6BAA6B,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,4CAA4C;IAE1H,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,4CAA4C;IACzF,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,4CAA4C;IAE1G,uFAAuF;IACvF,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;CAC9D,CAAA"}
@@ -0,0 +1 @@
1
+ export {};