langmart-gateway-type3 3.0.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 (75) hide show
  1. package/.env.example +29 -0
  2. package/README.md +480 -0
  3. package/dist/bash-tools.d.ts +56 -0
  4. package/dist/bash-tools.d.ts.map +1 -0
  5. package/dist/bash-tools.js +188 -0
  6. package/dist/bash-tools.js.map +1 -0
  7. package/dist/core-tools.d.ts +94 -0
  8. package/dist/core-tools.d.ts.map +1 -0
  9. package/dist/core-tools.js +694 -0
  10. package/dist/core-tools.js.map +1 -0
  11. package/dist/debug-utils.d.ts +22 -0
  12. package/dist/debug-utils.d.ts.map +1 -0
  13. package/dist/debug-utils.js +37 -0
  14. package/dist/debug-utils.js.map +1 -0
  15. package/dist/devops-tools.d.ts +147 -0
  16. package/dist/devops-tools.d.ts.map +1 -0
  17. package/dist/devops-tools.js +718 -0
  18. package/dist/devops-tools.js.map +1 -0
  19. package/dist/gateway-config.d.ts +56 -0
  20. package/dist/gateway-config.d.ts.map +1 -0
  21. package/dist/gateway-config.js +198 -0
  22. package/dist/gateway-config.js.map +1 -0
  23. package/dist/gateway-mode.d.ts +58 -0
  24. package/dist/gateway-mode.d.ts.map +1 -0
  25. package/dist/gateway-mode.js +240 -0
  26. package/dist/gateway-mode.js.map +1 -0
  27. package/dist/gateway-server.d.ts +208 -0
  28. package/dist/gateway-server.d.ts.map +1 -0
  29. package/dist/gateway-server.js +1811 -0
  30. package/dist/gateway-server.js.map +1 -0
  31. package/dist/headless-session.d.ts +192 -0
  32. package/dist/headless-session.d.ts.map +1 -0
  33. package/dist/headless-session.js +584 -0
  34. package/dist/headless-session.js.map +1 -0
  35. package/dist/index-server.d.ts +4 -0
  36. package/dist/index-server.d.ts.map +1 -0
  37. package/dist/index-server.js +129 -0
  38. package/dist/index-server.js.map +1 -0
  39. package/dist/index.d.ts +6 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +101 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/key-vault.d.ts +102 -0
  44. package/dist/key-vault.d.ts.map +1 -0
  45. package/dist/key-vault.js +365 -0
  46. package/dist/key-vault.js.map +1 -0
  47. package/dist/local-vault.d.ts +195 -0
  48. package/dist/local-vault.d.ts.map +1 -0
  49. package/dist/local-vault.js +571 -0
  50. package/dist/local-vault.js.map +1 -0
  51. package/dist/marketplace-tools.d.ts +104 -0
  52. package/dist/marketplace-tools.d.ts.map +1 -0
  53. package/dist/marketplace-tools.js +2846 -0
  54. package/dist/marketplace-tools.js.map +1 -0
  55. package/dist/mcp-manager.d.ts +114 -0
  56. package/dist/mcp-manager.d.ts.map +1 -0
  57. package/dist/mcp-manager.js +338 -0
  58. package/dist/mcp-manager.js.map +1 -0
  59. package/dist/web-tools.d.ts +86 -0
  60. package/dist/web-tools.d.ts.map +1 -0
  61. package/dist/web-tools.js +431 -0
  62. package/dist/web-tools.js.map +1 -0
  63. package/dist/websocket-handler.d.ts +131 -0
  64. package/dist/websocket-handler.d.ts.map +1 -0
  65. package/dist/websocket-handler.js +596 -0
  66. package/dist/websocket-handler.js.map +1 -0
  67. package/dist/welcome-pages.d.ts +6 -0
  68. package/dist/welcome-pages.d.ts.map +1 -0
  69. package/dist/welcome-pages.js +200 -0
  70. package/dist/welcome-pages.js.map +1 -0
  71. package/package.json +168 -0
  72. package/scripts/install-remote.sh +282 -0
  73. package/scripts/start.sh +85 -0
  74. package/scripts/status.sh +79 -0
  75. package/scripts/stop.sh +67 -0
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ /**
3
+ * Welcome Page Content for LangMart CLI
4
+ * Simple text-based pages without box-drawing characters
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.buildWelcomePage = void 0;
8
+ const buildWelcomePage = (pageNumber) => {
9
+ switch (pageNumber) {
10
+ case 0:
11
+ return buildMainWelcomePage();
12
+ case 1:
13
+ return buildBasicsGuidePage();
14
+ case 2:
15
+ return buildAddProviderGuidePage();
16
+ case 3:
17
+ return buildChatGuidePage();
18
+ default:
19
+ return buildMainWelcomePage();
20
+ }
21
+ };
22
+ exports.buildWelcomePage = buildWelcomePage;
23
+ const buildMainWelcomePage = () => {
24
+ return [
25
+ '',
26
+ ' 🎯 Welcome to LangMart CLI',
27
+ ' Self-Hosted AI Gateway & Chat Interface',
28
+ '',
29
+ ' Page 1/4',
30
+ '',
31
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
32
+ '',
33
+ ' 💡 What is LangMart?',
34
+ '',
35
+ ' LangMart is your self-hosted AI gateway that gives you:',
36
+ '',
37
+ ' ✓ Unified access to 20+ LLM providers',
38
+ ' (OpenAI, Anthropic, Groq, Google, Ollama, and more)',
39
+ '',
40
+ ' ✓ Complete control over your API keys and data',
41
+ ' (stored locally in encrypted vault)',
42
+ '',
43
+ ' ✓ Built-in AI assistant with powerful tools',
44
+ ' (connection management, file operations, web search)',
45
+ '',
46
+ ' ✓ Chat with any LLM using OpenAI-compatible API',
47
+ '',
48
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
49
+ '',
50
+ ' 📖 What\'s Next?',
51
+ '',
52
+ ' This guide will show you:',
53
+ ' • The basics of using LangMart',
54
+ ' • How to add your first AI provider',
55
+ ' • How to chat with AI models',
56
+ '',
57
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
58
+ '',
59
+ ' Press Space or Enter to continue →',
60
+ ' Press ESC to skip guide',
61
+ ''
62
+ ];
63
+ };
64
+ const buildBasicsGuidePage = () => {
65
+ return [
66
+ '',
67
+ ' 📚 Getting Started - The Basics',
68
+ '',
69
+ ' Page 2/4',
70
+ '',
71
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
72
+ '',
73
+ ' 🎯 What Can You Do Here?',
74
+ '',
75
+ ' ✓ Chat with 20+ AI models',
76
+ ' (OpenAI, Claude, Gemini, Llama, and more)',
77
+ '',
78
+ ' ✓ Manage your AI provider connections',
79
+ '',
80
+ ' ✓ Discover and register new models',
81
+ '',
82
+ ' ✓ Store API keys securely in local vault',
83
+ '',
84
+ ' ✓ Use AI with built-in tools',
85
+ ' (files, web, connections)',
86
+ '',
87
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
88
+ '',
89
+ ' ⚡ Quick Actions',
90
+ '',
91
+ ' Tab Select AI model for chat',
92
+ ' ESC Open main menu / settings',
93
+ ' /help Show all commands',
94
+ ' /tools List available AI tools',
95
+ ' /status Check system health',
96
+ ' /clear Start fresh conversation',
97
+ '',
98
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
99
+ '',
100
+ ' 💡 Key Concepts',
101
+ '',
102
+ ' Connection = Link to an AI provider (Groq, OpenAI, etc.)',
103
+ ' Model = Specific AI (GPT-4, Claude, Llama, etc.)',
104
+ ' Vault = Encrypted local storage for API keys',
105
+ ' Tools = Functions AI can use (read files, etc.)',
106
+ ''
107
+ ];
108
+ };
109
+ const buildAddProviderGuidePage = () => {
110
+ return [
111
+ '',
112
+ ' 🔌 Adding Your First AI Provider',
113
+ '',
114
+ ' Page 3/4',
115
+ '',
116
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
117
+ '',
118
+ ' 🤖 Easy Way: Just Ask the AI!',
119
+ '',
120
+ ' Simply type your request in chat:',
121
+ '',
122
+ ' → "Add Groq with API key gsk_..."',
123
+ ' → "Connect to OpenAI with my key"',
124
+ ' → "Set up Anthropic Claude"',
125
+ '',
126
+ ' AI will automatically:',
127
+ ' ✓ Validate your key',
128
+ ' ✓ Create connection',
129
+ ' ✓ Discover models',
130
+ '',
131
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
132
+ '',
133
+ ' 🛠️ Manual Way: Through Menu',
134
+ '',
135
+ ' 1. Press ESC → Settings & Configuration',
136
+ ' 2. Select "Add Connection"',
137
+ ' 3. Choose provider & enter API key',
138
+ ' 4. Select "Self-hosted" for local storage',
139
+ '',
140
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
141
+ '',
142
+ ' 🎁 Free Providers to Try:',
143
+ '',
144
+ ' Groq Fast, generous free tier (recommended)',
145
+ ' Ollama 100% free, runs locally',
146
+ ' Gemini Google\'s AI with free tier',
147
+ '',
148
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
149
+ '',
150
+ ' 💡 After Adding:',
151
+ ' Ask AI: "Discover models from [provider]"',
152
+ ''
153
+ ];
154
+ };
155
+ const buildChatGuidePage = () => {
156
+ return [
157
+ '',
158
+ ' 💬 Chatting with AI Models',
159
+ '',
160
+ ' Page 4/4',
161
+ '',
162
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
163
+ '',
164
+ ' Step 1: Pick a Model',
165
+ '',
166
+ ' Press Tab → Browse models in tabs',
167
+ ' Type to filter: "groq" or "claude" or "gpt"',
168
+ ' Press Enter to select',
169
+ '',
170
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
171
+ '',
172
+ ' Step 2: Just Chat!',
173
+ '',
174
+ ' Type your message → Press Enter → Get response',
175
+ '',
176
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
177
+ '',
178
+ ' 🛠️ AI Can Use Tools Automatically!',
179
+ '',
180
+ ' Try asking:',
181
+ '',
182
+ ' "List my connections" → Shows providers',
183
+ ' "Discover models from Groq" → Finds models',
184
+ ' "Test connection 1" → Checks it works',
185
+ ' "Search the web for..." → Gets info',
186
+ ' "Read file /path/to/file" → Shows content',
187
+ '',
188
+ ' Available tools: Connections • Files • Web • System',
189
+ ' Type /tools to see complete list',
190
+ '',
191
+ '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
192
+ '',
193
+ ' 💡 Quick Tips',
194
+ '',
195
+ ' /clear Start fresh conversation',
196
+ ' ↑ ↓ arrows Navigate input history',
197
+ ''
198
+ ];
199
+ };
200
+ //# sourceMappingURL=welcome-pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome-pages.js","sourceRoot":"","sources":["../welcome-pages.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,168 @@
1
+ {
2
+ "name": "langmart-gateway-type3",
3
+ "version": "3.0.0",
4
+ "description": "LangMart Type 3 Gateway - Seller-Managed Gateway with Local Vault",
5
+ "main": "dist/index-server.js",
6
+ "types": "dist/index-server.d.ts",
7
+ "bin": {
8
+ "langmart-gateway": "./dist/index-server.js",
9
+ "gw3": "./dist/index-server.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "ts-node index-server.ts",
14
+ "start": "bash scripts/start.sh",
15
+ "stop": "bash scripts/stop.sh",
16
+ "restart": "npm run stop && sleep 2 && npm run start",
17
+ "status": "bash scripts/status.sh",
18
+ "cli": "ts-node cli.ts",
19
+ "ui": "vite-node cli-split-layout.tsx",
20
+ "ui:debug": "vite-node cli-split-layout.tsx --debug",
21
+ "self": "vite-node cli-split-layout.tsx",
22
+ "ui:tsx": "tsx cli-interactive.tsx",
23
+ "ui:ts-node": "node --loader ts-node/esm cli-interactive.tsx",
24
+ "test:vault": "vite-node test-vault-auth.ts",
25
+ "test:auth": "vite-node test-auth-flow.ts",
26
+ "clean": "rm -rf dist",
27
+ "typecheck": "tsc --noEmit",
28
+ "prepublishOnly": "npm run build",
29
+ "publish:dry": "npm publish --dry-run",
30
+ "publish:github": "npm publish --registry=https://npm.pkg.github.com"
31
+ },
32
+ "files": [
33
+ "dist/index-server.js",
34
+ "dist/index-server.js.map",
35
+ "dist/index-server.d.ts",
36
+ "dist/index-server.d.ts.map",
37
+ "dist/index.js",
38
+ "dist/index.js.map",
39
+ "dist/index.d.ts",
40
+ "dist/index.d.ts.map",
41
+ "dist/gateway-server.js",
42
+ "dist/gateway-server.js.map",
43
+ "dist/gateway-server.d.ts",
44
+ "dist/gateway-server.d.ts.map",
45
+ "dist/gateway-mode.js",
46
+ "dist/gateway-mode.js.map",
47
+ "dist/gateway-mode.d.ts",
48
+ "dist/gateway-mode.d.ts.map",
49
+ "dist/gateway-config.js",
50
+ "dist/gateway-config.js.map",
51
+ "dist/gateway-config.d.ts",
52
+ "dist/gateway-config.d.ts.map",
53
+ "dist/local-vault.js",
54
+ "dist/local-vault.js.map",
55
+ "dist/local-vault.d.ts",
56
+ "dist/local-vault.d.ts.map",
57
+ "dist/key-vault.js",
58
+ "dist/key-vault.js.map",
59
+ "dist/key-vault.d.ts",
60
+ "dist/key-vault.d.ts.map",
61
+ "dist/websocket-handler.js",
62
+ "dist/websocket-handler.js.map",
63
+ "dist/websocket-handler.d.ts",
64
+ "dist/websocket-handler.d.ts.map",
65
+ "dist/headless-session.js",
66
+ "dist/headless-session.js.map",
67
+ "dist/headless-session.d.ts",
68
+ "dist/headless-session.d.ts.map",
69
+ "dist/marketplace-tools.js",
70
+ "dist/marketplace-tools.js.map",
71
+ "dist/marketplace-tools.d.ts",
72
+ "dist/marketplace-tools.d.ts.map",
73
+ "dist/devops-tools.js",
74
+ "dist/devops-tools.js.map",
75
+ "dist/devops-tools.d.ts",
76
+ "dist/devops-tools.d.ts.map",
77
+ "dist/core-tools.js",
78
+ "dist/core-tools.js.map",
79
+ "dist/core-tools.d.ts",
80
+ "dist/core-tools.d.ts.map",
81
+ "dist/web-tools.js",
82
+ "dist/web-tools.js.map",
83
+ "dist/web-tools.d.ts",
84
+ "dist/web-tools.d.ts.map",
85
+ "dist/bash-tools.js",
86
+ "dist/bash-tools.js.map",
87
+ "dist/bash-tools.d.ts",
88
+ "dist/bash-tools.d.ts.map",
89
+ "dist/mcp-manager.js",
90
+ "dist/mcp-manager.js.map",
91
+ "dist/mcp-manager.d.ts",
92
+ "dist/mcp-manager.d.ts.map",
93
+ "dist/debug-utils.js",
94
+ "dist/debug-utils.js.map",
95
+ "dist/debug-utils.d.ts",
96
+ "dist/debug-utils.d.ts.map",
97
+ "dist/welcome-pages.js",
98
+ "dist/welcome-pages.js.map",
99
+ "dist/welcome-pages.d.ts",
100
+ "dist/welcome-pages.d.ts.map",
101
+ "scripts/start.sh",
102
+ "scripts/stop.sh",
103
+ "scripts/status.sh",
104
+ "scripts/install-remote.sh",
105
+ ".env.example",
106
+ "README.md"
107
+ ],
108
+ "keywords": [
109
+ "gateway",
110
+ "seller",
111
+ "websocket",
112
+ "server",
113
+ "llm",
114
+ "local-vault",
115
+ "langmart",
116
+ "ai-marketplace"
117
+ ],
118
+ "author": "LangMart",
119
+ "license": "MIT",
120
+ "repository": {
121
+ "type": "git",
122
+ "url": "git+https://github.com/YiHuangDB/LangMartDesign.git",
123
+ "directory": "gateway-type3"
124
+ },
125
+ "bugs": {
126
+ "url": "https://github.com/YiHuangDB/LangMartDesign/issues"
127
+ },
128
+ "homepage": "https://github.com/YiHuangDB/LangMartDesign/tree/main/gateway-type3#readme",
129
+ "publishConfig": {
130
+ "registry": "https://registry.npmjs.org",
131
+ "access": "public"
132
+ },
133
+ "dependencies": {
134
+ "@modelcontextprotocol/sdk": "^1.18.2",
135
+ "@swc/core": "^1.13.5",
136
+ "@swc/helpers": "^0.5.17",
137
+ "@types/glob": "^8.1.0",
138
+ "@types/react": "^19.2.0",
139
+ "axios": "^1.6.7",
140
+ "cheerio": "^1.1.2",
141
+ "clipboardy": "^5.0.0",
142
+ "express": "^4.18.2",
143
+ "glob": "^11.0.3",
144
+ "ink": "^6.3.1",
145
+ "ink-spinner": "^5.0.0",
146
+ "ink-text-input": "^6.0.0",
147
+ "pg": "^8.16.3",
148
+ "react": "^19.2.0",
149
+ "ssh2": "^1.17.0",
150
+ "terminal-image": "^4.1.0",
151
+ "uuid": "^9.0.1",
152
+ "ws": "^8.16.0"
153
+ },
154
+ "devDependencies": {
155
+ "@swc-node/register": "^1.11.1",
156
+ "@types/express": "^5.0.3",
157
+ "@types/node": "^20.11.16",
158
+ "@types/uuid": "^9.0.8",
159
+ "@types/ws": "^8.5.10",
160
+ "ts-node": "^10.9.2",
161
+ "tsx": "^4.20.6",
162
+ "typescript": "^5.3.3",
163
+ "vite-node": "^3.2.4"
164
+ },
165
+ "engines": {
166
+ "node": ">=18.0.0"
167
+ }
168
+ }
@@ -0,0 +1,282 @@
1
+ #!/bin/bash
2
+ # Remote Installation Script for LangMart Gateway Type 3
3
+ # Usage: curl -fsSL https://raw.githubusercontent.com/YiHuangDB/LangMartDesign/main/gateway-type3/scripts/install-remote.sh | bash
4
+ # Or: bash install-remote.sh [OPTIONS]
5
+ #
6
+ # Options:
7
+ # --marketplace-url URL Marketplace WebSocket URL (default: ws://localhost:8081)
8
+ # --api-key KEY Gateway API key for authentication
9
+ # --port PORT Gateway port (default: 8083)
10
+ # --install-dir DIR Installation directory (default: /opt/langmart-gateway)
11
+ # --service Install as systemd service
12
+ # --help Show this help message
13
+
14
+ set -e
15
+
16
+ # Colors
17
+ RED='\033[0;31m'
18
+ GREEN='\033[0;32m'
19
+ YELLOW='\033[1;33m'
20
+ BLUE='\033[0;34m'
21
+ CYAN='\033[0;36m'
22
+ NC='\033[0m' # No Color
23
+
24
+ # Default configuration
25
+ INSTALL_DIR="/opt/langmart-gateway"
26
+ GATEWAY_PORT="8083"
27
+ MARKETPLACE_URL="ws://localhost:8081"
28
+ GATEWAY_API_KEY=""
29
+ INSTALL_SERVICE=false
30
+ GITHUB_TOKEN=""
31
+
32
+ # Parse command line arguments
33
+ while [[ $# -gt 0 ]]; do
34
+ case $1 in
35
+ --marketplace-url)
36
+ MARKETPLACE_URL="$2"
37
+ shift 2
38
+ ;;
39
+ --api-key)
40
+ GATEWAY_API_KEY="$2"
41
+ shift 2
42
+ ;;
43
+ --port)
44
+ GATEWAY_PORT="$2"
45
+ shift 2
46
+ ;;
47
+ --install-dir)
48
+ INSTALL_DIR="$2"
49
+ shift 2
50
+ ;;
51
+ --service)
52
+ INSTALL_SERVICE=true
53
+ shift
54
+ ;;
55
+ --github-token)
56
+ GITHUB_TOKEN="$2"
57
+ shift 2
58
+ ;;
59
+ --help)
60
+ echo "LangMart Gateway Type 3 - Remote Installation Script"
61
+ echo ""
62
+ echo "Usage: $0 [OPTIONS]"
63
+ echo ""
64
+ echo "Options:"
65
+ echo " --marketplace-url URL Marketplace WebSocket URL (default: ws://localhost:8081)"
66
+ echo " --api-key KEY Gateway API key for authentication"
67
+ echo " --port PORT Gateway port (default: 8083)"
68
+ echo " --install-dir DIR Installation directory (default: /opt/langmart-gateway)"
69
+ echo " --service Install as systemd service"
70
+ echo " --github-token TOKEN GitHub token for npm package access"
71
+ echo " --help Show this help message"
72
+ echo ""
73
+ echo "Example:"
74
+ echo " $0 --marketplace-url ws://10.0.1.117:8081 --api-key sk-test-key --service"
75
+ exit 0
76
+ ;;
77
+ *)
78
+ echo -e "${RED}Unknown option: $1${NC}"
79
+ exit 1
80
+ ;;
81
+ esac
82
+ done
83
+
84
+ echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
85
+ echo -e "${BLUE}║ LangMart Gateway Type 3 - Remote Installation ║${NC}"
86
+ echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
87
+ echo ""
88
+
89
+ # Check if running as root
90
+ if [ "$EUID" -ne 0 ]; then
91
+ echo -e "${YELLOW}Warning: Not running as root. You may need sudo for some operations.${NC}"
92
+ fi
93
+
94
+ # Check Node.js installation
95
+ echo -e "${CYAN}[1/6] Checking Node.js installation...${NC}"
96
+ if ! command -v node &> /dev/null; then
97
+ echo -e "${YELLOW}Node.js not found. Installing Node.js 20.x...${NC}"
98
+
99
+ # Detect OS
100
+ if [ -f /etc/debian_version ]; then
101
+ # Debian/Ubuntu
102
+ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
103
+ sudo apt-get install -y nodejs
104
+ elif [ -f /etc/redhat-release ]; then
105
+ # RHEL/CentOS/Fedora
106
+ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
107
+ sudo yum install -y nodejs
108
+ elif [ "$(uname)" == "Darwin" ]; then
109
+ # macOS
110
+ if command -v brew &> /dev/null; then
111
+ brew install node@20
112
+ else
113
+ echo -e "${RED}Please install Homebrew first: https://brew.sh${NC}"
114
+ exit 1
115
+ fi
116
+ else
117
+ echo -e "${RED}Unsupported OS. Please install Node.js 18+ manually.${NC}"
118
+ exit 1
119
+ fi
120
+ fi
121
+
122
+ NODE_VERSION=$(node -v)
123
+ echo -e "${GREEN}✓ Node.js ${NODE_VERSION} installed${NC}"
124
+
125
+ # Check npm
126
+ if ! command -v npm &> /dev/null; then
127
+ echo -e "${RED}npm not found. Please install npm.${NC}"
128
+ exit 1
129
+ fi
130
+
131
+ NPM_VERSION=$(npm -v)
132
+ echo -e "${GREEN}✓ npm ${NPM_VERSION} installed${NC}"
133
+
134
+ # Create installation directory
135
+ echo -e "${CYAN}[2/6] Creating installation directory...${NC}"
136
+ sudo mkdir -p "$INSTALL_DIR"
137
+ sudo chown -R $(whoami):$(whoami) "$INSTALL_DIR"
138
+ cd "$INSTALL_DIR"
139
+ echo -e "${GREEN}✓ Directory created: ${INSTALL_DIR}${NC}"
140
+
141
+ # Configure npm for GitHub Packages
142
+ echo -e "${CYAN}[3/6] Configuring npm registry...${NC}"
143
+ if [ -n "$GITHUB_TOKEN" ]; then
144
+ echo "@langmart:registry=https://npm.pkg.github.com" > .npmrc
145
+ echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" >> .npmrc
146
+ echo -e "${GREEN}✓ GitHub Packages configured${NC}"
147
+ else
148
+ echo -e "${YELLOW}No GitHub token provided. Using public npm registry fallback...${NC}"
149
+ # For public packages or when cloning directly
150
+ fi
151
+
152
+ # Initialize package.json if not exists
153
+ if [ ! -f package.json ]; then
154
+ echo '{"name": "langmart-gateway-instance", "version": "1.0.0", "private": true}' > package.json
155
+ fi
156
+
157
+ # Install the gateway package
158
+ echo -e "${CYAN}[4/6] Installing @langmart/gateway-type3...${NC}"
159
+ if [ -n "$GITHUB_TOKEN" ]; then
160
+ npm install @langmart/gateway-type3@latest
161
+ else
162
+ # Direct clone fallback for development
163
+ echo -e "${YELLOW}Cloning from GitHub repository...${NC}"
164
+ git clone --depth 1 https://github.com/YiHuangDB/LangMartDesign.git /tmp/langmart-clone
165
+ cp -r /tmp/langmart-clone/gateway-type3/* .
166
+ rm -rf /tmp/langmart-clone
167
+ npm install --production
168
+ npm run build
169
+ fi
170
+ echo -e "${GREEN}✓ Gateway package installed${NC}"
171
+
172
+ # Create environment file
173
+ echo -e "${CYAN}[5/6] Creating environment configuration...${NC}"
174
+ cat > .env << EOF
175
+ # LangMart Gateway Type 3 Configuration
176
+ # Generated by install-remote.sh on $(date)
177
+
178
+ # Gateway identification
179
+ INSTANCE_ID=gw3-$(hostname)-$(date +%s | tail -c 5)
180
+ GATEWAY_PORT=${GATEWAY_PORT}
181
+
182
+ # Marketplace connection
183
+ MARKETPLACE_URL=${MARKETPLACE_URL}
184
+
185
+ # Gateway authentication
186
+ GATEWAY_API_KEY=${GATEWAY_API_KEY}
187
+
188
+ # Local vault configuration
189
+ VAULT_PATH=.vault/credentials.enc
190
+ VAULT_PASSWORD=$(openssl rand -base64 32)
191
+
192
+ # Environment
193
+ NODE_ENV=production
194
+ EOF
195
+
196
+ echo -e "${GREEN}✓ Environment file created${NC}"
197
+
198
+ # Create start/stop scripts
199
+ cat > start.sh << 'STARTEOF'
200
+ #!/bin/bash
201
+ cd "$(dirname "$0")"
202
+ source .env 2>/dev/null || true
203
+
204
+ if [ -d node_modules/@langmart/gateway-type3 ]; then
205
+ # Installed via npm
206
+ node node_modules/@langmart/gateway-type3/dist/index-server.js
207
+ else
208
+ # Direct installation
209
+ node dist/index-server.js
210
+ fi
211
+ STARTEOF
212
+ chmod +x start.sh
213
+
214
+ cat > stop.sh << 'STOPEOF'
215
+ #!/bin/bash
216
+ PORT=${GATEWAY_PORT:-8083}
217
+ PID=$(lsof -ti:$PORT)
218
+ if [ -n "$PID" ]; then
219
+ kill $PID
220
+ echo "Gateway stopped (PID: $PID)"
221
+ else
222
+ echo "Gateway not running"
223
+ fi
224
+ STOPEOF
225
+ chmod +x stop.sh
226
+
227
+ # Install as systemd service if requested
228
+ if [ "$INSTALL_SERVICE" = true ]; then
229
+ echo -e "${CYAN}[6/6] Installing systemd service...${NC}"
230
+
231
+ sudo tee /etc/systemd/system/langmart-gateway.service > /dev/null << EOF
232
+ [Unit]
233
+ Description=LangMart Gateway Type 3
234
+ After=network.target
235
+
236
+ [Service]
237
+ Type=simple
238
+ User=$(whoami)
239
+ WorkingDirectory=${INSTALL_DIR}
240
+ EnvironmentFile=${INSTALL_DIR}/.env
241
+ ExecStart=/usr/bin/node ${INSTALL_DIR}/start.sh
242
+ Restart=on-failure
243
+ RestartSec=10
244
+
245
+ [Install]
246
+ WantedBy=multi-user.target
247
+ EOF
248
+
249
+ sudo systemctl daemon-reload
250
+ sudo systemctl enable langmart-gateway
251
+ echo -e "${GREEN}✓ Systemd service installed${NC}"
252
+ echo -e "${CYAN} Start: sudo systemctl start langmart-gateway${NC}"
253
+ echo -e "${CYAN} Stop: sudo systemctl stop langmart-gateway${NC}"
254
+ echo -e "${CYAN} Status: sudo systemctl status langmart-gateway${NC}"
255
+ echo -e "${CYAN} Logs: sudo journalctl -u langmart-gateway -f${NC}"
256
+ else
257
+ echo -e "${CYAN}[6/6] Skipping systemd service installation...${NC}"
258
+ fi
259
+
260
+ echo ""
261
+ echo -e "${GREEN}╔════════════════════════════════════════════════════════════╗${NC}"
262
+ echo -e "${GREEN}║ Installation Complete! ║${NC}"
263
+ echo -e "${GREEN}╚════════════════════════════════════════════════════════════╝${NC}"
264
+ echo ""
265
+ echo -e "${CYAN}Installation Directory: ${INSTALL_DIR}${NC}"
266
+ echo -e "${CYAN}Gateway Port: ${GATEWAY_PORT}${NC}"
267
+ echo -e "${CYAN}Marketplace URL: ${MARKETPLACE_URL}${NC}"
268
+ echo ""
269
+ echo -e "${YELLOW}Before starting, configure your API key:${NC}"
270
+ echo -e " ${CYAN}1. Edit ${INSTALL_DIR}/.env${NC}"
271
+ echo -e " ${CYAN}2. Set GATEWAY_API_KEY=your-api-key${NC}"
272
+ echo ""
273
+ echo -e "${YELLOW}To start the gateway:${NC}"
274
+ if [ "$INSTALL_SERVICE" = true ]; then
275
+ echo -e " ${CYAN}sudo systemctl start langmart-gateway${NC}"
276
+ else
277
+ echo -e " ${CYAN}cd ${INSTALL_DIR} && ./start.sh${NC}"
278
+ fi
279
+ echo ""
280
+ echo -e "${YELLOW}To verify installation:${NC}"
281
+ echo -e " ${CYAN}curl http://localhost:${GATEWAY_PORT}/health${NC}"
282
+ echo ""