ai-mind-map 1.1.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.
- package/LICENSE +21 -0
- package/README.md +554 -0
- package/dist/change-tracker/change-log.d.ts +160 -0
- package/dist/change-tracker/change-log.d.ts.map +1 -0
- package/dist/change-tracker/change-log.js +507 -0
- package/dist/change-tracker/change-log.js.map +1 -0
- package/dist/change-tracker/diff-engine.d.ts +149 -0
- package/dist/change-tracker/diff-engine.d.ts.map +1 -0
- package/dist/change-tracker/diff-engine.js +530 -0
- package/dist/change-tracker/diff-engine.js.map +1 -0
- package/dist/change-tracker/watcher.d.ts +137 -0
- package/dist/change-tracker/watcher.d.ts.map +1 -0
- package/dist/change-tracker/watcher.js +300 -0
- package/dist/change-tracker/watcher.js.map +1 -0
- package/dist/cli.d.ts +20 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +937 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +222 -0
- package/dist/config.js.map +1 -0
- package/dist/context/compressor.d.ts +49 -0
- package/dist/context/compressor.d.ts.map +1 -0
- package/dist/context/compressor.js +769 -0
- package/dist/context/compressor.js.map +1 -0
- package/dist/context/progressive-disclosure.d.ts +71 -0
- package/dist/context/progressive-disclosure.d.ts.map +1 -0
- package/dist/context/progressive-disclosure.js +470 -0
- package/dist/context/progressive-disclosure.js.map +1 -0
- package/dist/context/token-budget.d.ts +121 -0
- package/dist/context/token-budget.d.ts.map +1 -0
- package/dist/context/token-budget.js +282 -0
- package/dist/context/token-budget.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +944 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +66 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +946 -0
- package/dist/install.js.map +1 -0
- package/dist/knowledge-graph/architecture.d.ts +213 -0
- package/dist/knowledge-graph/architecture.d.ts.map +1 -0
- package/dist/knowledge-graph/architecture.js +585 -0
- package/dist/knowledge-graph/architecture.js.map +1 -0
- package/dist/knowledge-graph/cypher.d.ts +113 -0
- package/dist/knowledge-graph/cypher.d.ts.map +1 -0
- package/dist/knowledge-graph/cypher.js +1051 -0
- package/dist/knowledge-graph/cypher.js.map +1 -0
- package/dist/knowledge-graph/dead-code.d.ts +121 -0
- package/dist/knowledge-graph/dead-code.d.ts.map +1 -0
- package/dist/knowledge-graph/dead-code.js +331 -0
- package/dist/knowledge-graph/dead-code.js.map +1 -0
- package/dist/knowledge-graph/flow-analyzer.d.ts +167 -0
- package/dist/knowledge-graph/flow-analyzer.d.ts.map +1 -0
- package/dist/knowledge-graph/flow-analyzer.js +739 -0
- package/dist/knowledge-graph/flow-analyzer.js.map +1 -0
- package/dist/knowledge-graph/graph.d.ts +291 -0
- package/dist/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/knowledge-graph/graph.js +978 -0
- package/dist/knowledge-graph/graph.js.map +1 -0
- package/dist/knowledge-graph/index.d.ts +17 -0
- package/dist/knowledge-graph/index.d.ts.map +1 -0
- package/dist/knowledge-graph/index.js +14 -0
- package/dist/knowledge-graph/index.js.map +1 -0
- package/dist/knowledge-graph/indexer.d.ts +112 -0
- package/dist/knowledge-graph/indexer.d.ts.map +1 -0
- package/dist/knowledge-graph/indexer.js +506 -0
- package/dist/knowledge-graph/indexer.js.map +1 -0
- package/dist/knowledge-graph/pagerank.d.ts +141 -0
- package/dist/knowledge-graph/pagerank.d.ts.map +1 -0
- package/dist/knowledge-graph/pagerank.js +493 -0
- package/dist/knowledge-graph/pagerank.js.map +1 -0
- package/dist/knowledge-graph/parser.d.ts +55 -0
- package/dist/knowledge-graph/parser.d.ts.map +1 -0
- package/dist/knowledge-graph/parser.js +1090 -0
- package/dist/knowledge-graph/parser.js.map +1 -0
- package/dist/knowledge-graph/snapshot.d.ts +107 -0
- package/dist/knowledge-graph/snapshot.d.ts.map +1 -0
- package/dist/knowledge-graph/snapshot.js +435 -0
- package/dist/knowledge-graph/snapshot.js.map +1 -0
- package/dist/memory/decision-log.d.ts +151 -0
- package/dist/memory/decision-log.d.ts.map +1 -0
- package/dist/memory/decision-log.js +482 -0
- package/dist/memory/decision-log.js.map +1 -0
- package/dist/memory/persistent-memory.d.ts +182 -0
- package/dist/memory/persistent-memory.d.ts.map +1 -0
- package/dist/memory/persistent-memory.js +579 -0
- package/dist/memory/persistent-memory.js.map +1 -0
- package/dist/memory/session-memory.d.ts +165 -0
- package/dist/memory/session-memory.d.ts.map +1 -0
- package/dist/memory/session-memory.js +382 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/stress-test.d.ts +10 -0
- package/dist/stress-test.d.ts.map +1 -0
- package/dist/stress-test.js +258 -0
- package/dist/stress-test.js.map +1 -0
- package/dist/tools/advanced-tools.d.ts +32 -0
- package/dist/tools/advanced-tools.d.ts.map +1 -0
- package/dist/tools/advanced-tools.js +480 -0
- package/dist/tools/advanced-tools.js.map +1 -0
- package/dist/tools/change-tools.d.ts +76 -0
- package/dist/tools/change-tools.d.ts.map +1 -0
- package/dist/tools/change-tools.js +93 -0
- package/dist/tools/change-tools.js.map +1 -0
- package/dist/tools/context-tools.d.ts +68 -0
- package/dist/tools/context-tools.d.ts.map +1 -0
- package/dist/tools/context-tools.js +141 -0
- package/dist/tools/context-tools.js.map +1 -0
- package/dist/tools/debug-tools.d.ts +25 -0
- package/dist/tools/debug-tools.d.ts.map +1 -0
- package/dist/tools/debug-tools.js +286 -0
- package/dist/tools/debug-tools.js.map +1 -0
- package/dist/tools/evolving-tools.d.ts +23 -0
- package/dist/tools/evolving-tools.d.ts.map +1 -0
- package/dist/tools/evolving-tools.js +207 -0
- package/dist/tools/evolving-tools.js.map +1 -0
- package/dist/tools/flow-tools.d.ts +24 -0
- package/dist/tools/flow-tools.d.ts.map +1 -0
- package/dist/tools/flow-tools.js +265 -0
- package/dist/tools/flow-tools.js.map +1 -0
- package/dist/tools/graph-tools.d.ts +71 -0
- package/dist/tools/graph-tools.d.ts.map +1 -0
- package/dist/tools/graph-tools.js +165 -0
- package/dist/tools/graph-tools.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +62 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +195 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/smart-tools.d.ts +23 -0
- package/dist/tools/smart-tools.d.ts.map +1 -0
- package/dist/tools/smart-tools.js +482 -0
- package/dist/tools/smart-tools.js.map +1 -0
- package/dist/tools/snapshot-tools.d.ts +19 -0
- package/dist/tools/snapshot-tools.d.ts.map +1 -0
- package/dist/tools/snapshot-tools.js +149 -0
- package/dist/tools/snapshot-tools.js.map +1 -0
- package/dist/types.d.ts +181 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +45 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/logger.d.ts +59 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +142 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/token-counter.d.ts +51 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/dist/utils/token-counter.js +181 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/install.ps1 +321 -0
- package/install.sh +345 -0
- package/package.json +94 -0
- package/setup.bat +62 -0
package/install.sh
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
# AI Mind Map — One-line installer for macOS / Linux
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# curl -fsSL https://raw.githubusercontent.com/shdra06/ai-mind-map/main/install.sh | bash
|
|
7
|
+
#
|
|
8
|
+
# Or with options:
|
|
9
|
+
# bash install.sh --install-dir ~/my-tools/ai-mind-map --skip-config
|
|
10
|
+
#
|
|
11
|
+
# Flags:
|
|
12
|
+
# --install-dir <path> Custom install directory (default: ~/.ai-mind-map)
|
|
13
|
+
# --skip-config Skip AI agent auto-configuration
|
|
14
|
+
# --update Force update mode (git pull + rebuild)
|
|
15
|
+
# --help Show this help message
|
|
16
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
# ── Constants ────────────────────────────────────────────────────────────────
|
|
20
|
+
REPO_URL="https://github.com/shdra06/ai-mind-map.git"
|
|
21
|
+
MIN_NODE_MAJOR=18
|
|
22
|
+
ENTRY_POINT="dist/index.js"
|
|
23
|
+
INSTALL_DIR="${HOME}/.ai-mind-map"
|
|
24
|
+
SKIP_CONFIG=false
|
|
25
|
+
FORCE_UPDATE=false
|
|
26
|
+
|
|
27
|
+
# ── Colors ───────────────────────────────────────────────────────────────────
|
|
28
|
+
if [[ -t 1 ]]; then
|
|
29
|
+
RED='\033[0;31m'
|
|
30
|
+
GREEN='\033[0;32m'
|
|
31
|
+
YELLOW='\033[0;33m'
|
|
32
|
+
BLUE='\033[0;34m'
|
|
33
|
+
CYAN='\033[0;36m'
|
|
34
|
+
WHITE='\033[1;37m'
|
|
35
|
+
GRAY='\033[0;90m'
|
|
36
|
+
NC='\033[0m'
|
|
37
|
+
else
|
|
38
|
+
RED='' GREEN='' YELLOW='' BLUE='' CYAN='' WHITE='' GRAY='' NC=''
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# ── Banner ───────────────────────────────────────────────────────────────────
|
|
42
|
+
show_banner() {
|
|
43
|
+
echo -e "${CYAN}"
|
|
44
|
+
cat << 'EOF'
|
|
45
|
+
|
|
46
|
+
█████╗ ██╗ ███╗ ███╗██╗███╗ ██╗██████╗ ███╗ ███╗ █████╗ ██████╗
|
|
47
|
+
██╔══██╗██║ ████╗ ████║██║████╗ ██║██╔══██╗ ████╗ ████║██╔══██╗██╔══██╗
|
|
48
|
+
███████║██║ ██╔████╔██║██║██╔██╗ ██║██║ ██║ ██╔████╔██║███████║██████╔╝
|
|
49
|
+
██╔══██║██║ ██║╚██╔╝██║██║██║╚██╗██║██║ ██║ ██║╚██╔╝██║██╔══██║██╔═══╝
|
|
50
|
+
██║ ██║██║ ██║ ╚═╝ ██║██║██║ ╚████║██████╔╝ ██║ ╚═╝ ██║██║ ██║██║
|
|
51
|
+
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝
|
|
52
|
+
|
|
53
|
+
MCP Server — Reduce AI token usage by 80-99%
|
|
54
|
+
https://github.com/shdra06/ai-mind-map
|
|
55
|
+
|
|
56
|
+
EOF
|
|
57
|
+
echo -e "${NC}"
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# ── Helpers ──────────────────────────────────────────────────────────────────
|
|
61
|
+
step() { echo -e " ${BLUE}[*]${NC} $1"; }
|
|
62
|
+
ok() { echo -e " ${GREEN}[✓]${NC} $1"; }
|
|
63
|
+
warn() { echo -e " ${YELLOW}[!]${NC} $1"; }
|
|
64
|
+
err() { echo -e " ${RED}[✗]${NC} $1"; }
|
|
65
|
+
die() { err "$1"; exit 1; }
|
|
66
|
+
|
|
67
|
+
command_exists() { command -v "$1" &>/dev/null; }
|
|
68
|
+
|
|
69
|
+
# ── Parse Arguments ─────────────────────────────────────────────────────────
|
|
70
|
+
parse_args() {
|
|
71
|
+
while [[ $# -gt 0 ]]; do
|
|
72
|
+
case "$1" in
|
|
73
|
+
--install-dir)
|
|
74
|
+
INSTALL_DIR="$2"
|
|
75
|
+
shift 2
|
|
76
|
+
;;
|
|
77
|
+
--skip-config)
|
|
78
|
+
SKIP_CONFIG=true
|
|
79
|
+
shift
|
|
80
|
+
;;
|
|
81
|
+
--update)
|
|
82
|
+
FORCE_UPDATE=true
|
|
83
|
+
shift
|
|
84
|
+
;;
|
|
85
|
+
--help|-h)
|
|
86
|
+
echo "Usage: install.sh [--install-dir <path>] [--skip-config] [--update]"
|
|
87
|
+
echo ""
|
|
88
|
+
echo "Options:"
|
|
89
|
+
echo " --install-dir <path> Custom install directory (default: ~/.ai-mind-map)"
|
|
90
|
+
echo " --skip-config Skip AI agent auto-configuration"
|
|
91
|
+
echo " --update Force update mode"
|
|
92
|
+
echo " --help Show this help message"
|
|
93
|
+
exit 0
|
|
94
|
+
;;
|
|
95
|
+
*)
|
|
96
|
+
die "Unknown option: $1 (use --help for usage)"
|
|
97
|
+
;;
|
|
98
|
+
esac
|
|
99
|
+
done
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
# ── Pre-flight Checks ───────────────────────────────────────────────────────
|
|
103
|
+
assert_prerequisites() {
|
|
104
|
+
echo -e "\n ${WHITE}Checking prerequisites...${NC}"
|
|
105
|
+
|
|
106
|
+
# Node.js
|
|
107
|
+
if ! command_exists node; then
|
|
108
|
+
die "Node.js is not installed.\n Install via: https://nodejs.org or use nvm:\n curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash\n nvm install ${MIN_NODE_MAJOR}"
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
local node_version
|
|
112
|
+
node_version=$(node --version 2>/dev/null || echo "")
|
|
113
|
+
local node_major
|
|
114
|
+
node_major=$(echo "$node_version" | sed -n 's/^v\([0-9]*\)\..*/\1/p')
|
|
115
|
+
|
|
116
|
+
if [[ -z "$node_major" ]]; then
|
|
117
|
+
die "Could not determine Node.js version from: ${node_version}"
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
if [[ "$node_major" -lt "$MIN_NODE_MAJOR" ]]; then
|
|
121
|
+
die "Node.js v${MIN_NODE_MAJOR}+ is required. Found: ${node_version}\n Update: https://nodejs.org or nvm install ${MIN_NODE_MAJOR}"
|
|
122
|
+
fi
|
|
123
|
+
ok "Node.js ${node_version}"
|
|
124
|
+
|
|
125
|
+
# npm
|
|
126
|
+
if ! command_exists npm; then
|
|
127
|
+
die "npm is not installed. It should come with Node.js — try reinstalling Node."
|
|
128
|
+
fi
|
|
129
|
+
local npm_version
|
|
130
|
+
npm_version=$(npm --version 2>/dev/null)
|
|
131
|
+
ok "npm v${npm_version}"
|
|
132
|
+
|
|
133
|
+
# Git
|
|
134
|
+
if ! command_exists git; then
|
|
135
|
+
die "Git is not installed.\n Install via your package manager:\n macOS: brew install git\n Ubuntu: sudo apt install git\n Fedora: sudo dnf install git"
|
|
136
|
+
fi
|
|
137
|
+
local git_version
|
|
138
|
+
git_version=$(git --version 2>/dev/null)
|
|
139
|
+
ok "${git_version}"
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# ── Install / Update ────────────────────────────────────────────────────────
|
|
143
|
+
install_ai_mind_map() {
|
|
144
|
+
local is_existing=false
|
|
145
|
+
[[ -d "${INSTALL_DIR}/.git" ]] && is_existing=true
|
|
146
|
+
|
|
147
|
+
# Decide: fresh install or update
|
|
148
|
+
if $is_existing && ! $FORCE_UPDATE; then
|
|
149
|
+
warn "AI Mind Map is already installed at: ${INSTALL_DIR}"
|
|
150
|
+
read -rp " Update to latest version? (Y/n) " choice
|
|
151
|
+
if [[ "$choice" =~ ^[Nn] ]]; then
|
|
152
|
+
echo -e "\n ${GRAY}Installation cancelled.${NC}"
|
|
153
|
+
exit 0
|
|
154
|
+
fi
|
|
155
|
+
FORCE_UPDATE=true
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
if $FORCE_UPDATE && $is_existing; then
|
|
159
|
+
# ── Update ───────────────────────────────────────────────────────
|
|
160
|
+
echo -e "\n ${WHITE}Updating AI Mind Map...${NC}"
|
|
161
|
+
step "Pulling latest changes..."
|
|
162
|
+
if ! git -C "${INSTALL_DIR}" pull --ff-only 2>/dev/null; then
|
|
163
|
+
warn "Fast-forward pull failed. Trying git pull --rebase..."
|
|
164
|
+
if ! git -C "${INSTALL_DIR}" pull --rebase; then
|
|
165
|
+
die "Git pull failed. You may have local changes.\n Resolve manually in: ${INSTALL_DIR}"
|
|
166
|
+
fi
|
|
167
|
+
fi
|
|
168
|
+
ok "Repository updated"
|
|
169
|
+
else
|
|
170
|
+
# ── Fresh install ────────────────────────────────────────────────
|
|
171
|
+
echo -e "\n ${WHITE}Installing AI Mind Map...${NC}"
|
|
172
|
+
step "Cloning repository to: ${INSTALL_DIR}"
|
|
173
|
+
if [[ -d "$INSTALL_DIR" ]]; then
|
|
174
|
+
warn "Directory exists but is not a git repo. Removing..."
|
|
175
|
+
rm -rf "$INSTALL_DIR"
|
|
176
|
+
fi
|
|
177
|
+
if ! git clone "$REPO_URL" "$INSTALL_DIR"; then
|
|
178
|
+
die "Failed to clone repository.\n Check your internet connection and try again."
|
|
179
|
+
fi
|
|
180
|
+
ok "Repository cloned"
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
# ── Install dependencies ─────────────────────────────────────────────
|
|
184
|
+
step "Installing dependencies (this may take a minute)..."
|
|
185
|
+
if ! (cd "$INSTALL_DIR" && npm install --legacy-peer-deps); then
|
|
186
|
+
die "npm install failed. Check the output above for errors."
|
|
187
|
+
fi
|
|
188
|
+
ok "Dependencies installed"
|
|
189
|
+
|
|
190
|
+
# ── Build ────────────────────────────────────────────────────────────
|
|
191
|
+
step "Building TypeScript..."
|
|
192
|
+
if ! (cd "$INSTALL_DIR" && npx tsc); then
|
|
193
|
+
die "TypeScript build failed. Check the output above for errors."
|
|
194
|
+
fi
|
|
195
|
+
ok "Build complete"
|
|
196
|
+
|
|
197
|
+
# ── Verify build ─────────────────────────────────────────────────────
|
|
198
|
+
if [[ ! -f "${INSTALL_DIR}/${ENTRY_POINT}" ]]; then
|
|
199
|
+
die "Build verification failed: ${ENTRY_POINT} not found.\n Please report: https://github.com/shdra06/ai-mind-map/issues"
|
|
200
|
+
fi
|
|
201
|
+
ok "Build verified (${ENTRY_POINT} exists)"
|
|
202
|
+
|
|
203
|
+
# ── Symlink / PATH ───────────────────────────────────────────────────
|
|
204
|
+
create_symlink
|
|
205
|
+
|
|
206
|
+
# ── Agent configuration ──────────────────────────────────────────────
|
|
207
|
+
if ! $SKIP_CONFIG; then
|
|
208
|
+
configure_agents
|
|
209
|
+
fi
|
|
210
|
+
|
|
211
|
+
# ── Done ─────────────────────────────────────────────────────────────
|
|
212
|
+
show_success
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
# ── Symlink ──────────────────────────────────────────────────────────────────
|
|
216
|
+
create_symlink() {
|
|
217
|
+
local bin_dir=""
|
|
218
|
+
local link_path=""
|
|
219
|
+
|
|
220
|
+
# Prefer /usr/local/bin if writable, otherwise ~/bin or ~/.local/bin
|
|
221
|
+
if [[ -d "/usr/local/bin" && -w "/usr/local/bin" ]]; then
|
|
222
|
+
bin_dir="/usr/local/bin"
|
|
223
|
+
elif [[ -d "${HOME}/.local/bin" ]]; then
|
|
224
|
+
bin_dir="${HOME}/.local/bin"
|
|
225
|
+
elif [[ -d "${HOME}/bin" ]]; then
|
|
226
|
+
bin_dir="${HOME}/bin"
|
|
227
|
+
else
|
|
228
|
+
# Create ~/.local/bin
|
|
229
|
+
bin_dir="${HOME}/.local/bin"
|
|
230
|
+
mkdir -p "$bin_dir"
|
|
231
|
+
fi
|
|
232
|
+
|
|
233
|
+
link_path="${bin_dir}/ai-mind-map"
|
|
234
|
+
|
|
235
|
+
# Create a wrapper script instead of a direct symlink (more portable)
|
|
236
|
+
cat > "${link_path}" << WRAPPER
|
|
237
|
+
#!/usr/bin/env bash
|
|
238
|
+
exec node "${INSTALL_DIR}/${ENTRY_POINT}" "\$@"
|
|
239
|
+
WRAPPER
|
|
240
|
+
chmod +x "${link_path}"
|
|
241
|
+
ok "Created wrapper: ${link_path}"
|
|
242
|
+
|
|
243
|
+
# Check if bin_dir is in PATH
|
|
244
|
+
if [[ ":${PATH}:" != *":${bin_dir}:"* ]]; then
|
|
245
|
+
warn "${bin_dir} is not in your PATH."
|
|
246
|
+
local shell_rc=""
|
|
247
|
+
if [[ -f "${HOME}/.zshrc" ]]; then
|
|
248
|
+
shell_rc="${HOME}/.zshrc"
|
|
249
|
+
elif [[ -f "${HOME}/.bashrc" ]]; then
|
|
250
|
+
shell_rc="${HOME}/.bashrc"
|
|
251
|
+
elif [[ -f "${HOME}/.bash_profile" ]]; then
|
|
252
|
+
shell_rc="${HOME}/.bash_profile"
|
|
253
|
+
fi
|
|
254
|
+
|
|
255
|
+
if [[ -n "$shell_rc" ]]; then
|
|
256
|
+
local path_line="export PATH=\"${bin_dir}:\$PATH\""
|
|
257
|
+
if ! grep -qF "$bin_dir" "$shell_rc" 2>/dev/null; then
|
|
258
|
+
echo "" >> "$shell_rc"
|
|
259
|
+
echo "# AI Mind Map" >> "$shell_rc"
|
|
260
|
+
echo "$path_line" >> "$shell_rc"
|
|
261
|
+
ok "Added ${bin_dir} to PATH in ${shell_rc}"
|
|
262
|
+
warn "Run 'source ${shell_rc}' or restart your terminal."
|
|
263
|
+
fi
|
|
264
|
+
else
|
|
265
|
+
warn "Add this to your shell profile: export PATH=\"${bin_dir}:\$PATH\""
|
|
266
|
+
fi
|
|
267
|
+
fi
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
# ── Agent Auto-Configuration ────────────────────────────────────────────────
|
|
271
|
+
configure_agents() {
|
|
272
|
+
echo -e "\n ${WHITE}Detecting AI agents...${NC}"
|
|
273
|
+
|
|
274
|
+
local agents=()
|
|
275
|
+
|
|
276
|
+
# Claude Desktop
|
|
277
|
+
local claude_mac="${HOME}/Library/Application Support/Claude/claude_desktop_config.json"
|
|
278
|
+
local claude_linux="${HOME}/.config/Claude/claude_desktop_config.json"
|
|
279
|
+
[[ -f "$claude_mac" || -f "$claude_linux" ]] && agents+=("Claude Desktop")
|
|
280
|
+
|
|
281
|
+
# Claude Code
|
|
282
|
+
[[ -d "${HOME}/.claude" ]] && agents+=("Claude Code")
|
|
283
|
+
|
|
284
|
+
# Cursor
|
|
285
|
+
[[ -d "${HOME}/.cursor" ]] && agents+=("Cursor")
|
|
286
|
+
|
|
287
|
+
# VS Code
|
|
288
|
+
[[ -d "${HOME}/.config/Code/User" || -d "${HOME}/Library/Application Support/Code/User" ]] && agents+=("VS Code")
|
|
289
|
+
|
|
290
|
+
if [[ ${#agents[@]} -eq 0 ]]; then
|
|
291
|
+
warn "No AI agents detected. See README for manual setup."
|
|
292
|
+
return
|
|
293
|
+
fi
|
|
294
|
+
|
|
295
|
+
ok "Detected: $(IFS=', '; echo "${agents[*]}")"
|
|
296
|
+
echo ""
|
|
297
|
+
echo -e " ${WHITE}To configure an agent, add this to its MCP config:${NC}"
|
|
298
|
+
echo -e "${GRAY}"
|
|
299
|
+
cat << CONFEOF
|
|
300
|
+
|
|
301
|
+
{
|
|
302
|
+
"mcpServers": {
|
|
303
|
+
"ai-mind-map": {
|
|
304
|
+
"command": "node",
|
|
305
|
+
"args": [
|
|
306
|
+
"${INSTALL_DIR}/${ENTRY_POINT}",
|
|
307
|
+
"--project-root",
|
|
308
|
+
"<YOUR_PROJECT_PATH>"
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
CONFEOF
|
|
315
|
+
echo -e "${NC}"
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
# ── Success ──────────────────────────────────────────────────────────────────
|
|
319
|
+
show_success() {
|
|
320
|
+
echo ""
|
|
321
|
+
echo -e " ${GREEN}────────────────────────────────────────────────────────────${NC}"
|
|
322
|
+
echo -e " ${GREEN}✅ AI Mind Map installed successfully!${NC}"
|
|
323
|
+
echo -e " ${GREEN}────────────────────────────────────────────────────────────${NC}"
|
|
324
|
+
echo ""
|
|
325
|
+
echo -e " ${WHITE}Location:${NC} ${INSTALL_DIR}"
|
|
326
|
+
echo ""
|
|
327
|
+
echo -e " ${WHITE}Next steps:${NC}"
|
|
328
|
+
echo -e " ${GRAY} 1. Configure your AI agent (see above or README)${NC}"
|
|
329
|
+
echo -e " ${GRAY} 2. Test with: node \"${INSTALL_DIR}/${ENTRY_POINT}\" --project-root .${NC}"
|
|
330
|
+
echo -e " ${GRAY} 3. Star the repo: https://github.com/shdra06/ai-mind-map${NC}"
|
|
331
|
+
echo ""
|
|
332
|
+
echo -e " ${YELLOW}To update later: bash install.sh --update${NC}"
|
|
333
|
+
echo -e " ${YELLOW}Full docs: https://github.com/shdra06/ai-mind-map#readme${NC}"
|
|
334
|
+
echo ""
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
# ── Main ─────────────────────────────────────────────────────────────────────
|
|
338
|
+
main() {
|
|
339
|
+
parse_args "$@"
|
|
340
|
+
show_banner
|
|
341
|
+
assert_prerequisites
|
|
342
|
+
install_ai_mind_map
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
main "$@"
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ai-mind-map",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "AI Mind Map — MCP server that reduces AI coding agent token usage by 80-99% through persistent codebase memory, knowledge graphs, and intelligent context management",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ai-mind-map": "dist/cli.js",
|
|
9
|
+
"ai-mind-map-server": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/",
|
|
13
|
+
"install.sh",
|
|
14
|
+
"install.ps1",
|
|
15
|
+
"setup.bat",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"start": "node dist/index.js",
|
|
22
|
+
"cli": "node dist/cli.js",
|
|
23
|
+
"dev": "tsc --watch",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"inspect": "node --inspect dist/index.js",
|
|
26
|
+
"test": "npx tsx --test tests/*.test.ts",
|
|
27
|
+
"test:watch": "npx tsx --test --watch tests/*.test.ts",
|
|
28
|
+
"postinstall": "node dist/cli.js doctor 2>/dev/null || true",
|
|
29
|
+
"prepublishOnly": "npm run build && npm test"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/shdra06/ai-mind-map.git"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/shdra06/ai-mind-map#readme",
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/shdra06/ai-mind-map/issues"
|
|
38
|
+
},
|
|
39
|
+
"author": "shdra06",
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18.0.0"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@anthropic-ai/sdk": "^0.39.0",
|
|
45
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
46
|
+
"better-sqlite3": "^11.8.2",
|
|
47
|
+
"chokidar": "^4.0.3",
|
|
48
|
+
"glob": "^11.0.1",
|
|
49
|
+
"ignore": "^7.0.4",
|
|
50
|
+
"simple-git": "^3.27.0",
|
|
51
|
+
"tree-sitter": "^0.22.4",
|
|
52
|
+
"tree-sitter-bash": "*",
|
|
53
|
+
"tree-sitter-c": "*",
|
|
54
|
+
"tree-sitter-c-sharp": "*",
|
|
55
|
+
"tree-sitter-cpp": "*",
|
|
56
|
+
"tree-sitter-css": "*",
|
|
57
|
+
"tree-sitter-go": "*",
|
|
58
|
+
"tree-sitter-html": "*",
|
|
59
|
+
"tree-sitter-java": "*",
|
|
60
|
+
"tree-sitter-javascript": "*",
|
|
61
|
+
"tree-sitter-json": "*",
|
|
62
|
+
"tree-sitter-php": "*",
|
|
63
|
+
"tree-sitter-python": "*",
|
|
64
|
+
"tree-sitter-ruby": "*",
|
|
65
|
+
"tree-sitter-rust": "*",
|
|
66
|
+
"tree-sitter-typescript": "*",
|
|
67
|
+
"zod": "^3.24.4"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
71
|
+
"@types/node": "^22.15.0",
|
|
72
|
+
"tsx": "^4.22.4",
|
|
73
|
+
"typescript": "^5.8.3"
|
|
74
|
+
},
|
|
75
|
+
"keywords": [
|
|
76
|
+
"ai",
|
|
77
|
+
"mcp",
|
|
78
|
+
"mcp-server",
|
|
79
|
+
"token-optimization",
|
|
80
|
+
"knowledge-graph",
|
|
81
|
+
"tree-sitter",
|
|
82
|
+
"codebase-memory",
|
|
83
|
+
"context-management",
|
|
84
|
+
"llm",
|
|
85
|
+
"claude",
|
|
86
|
+
"cursor",
|
|
87
|
+
"copilot",
|
|
88
|
+
"coding-assistant",
|
|
89
|
+
"persistent-memory",
|
|
90
|
+
"pagerank",
|
|
91
|
+
"ast-parser"
|
|
92
|
+
],
|
|
93
|
+
"license": "MIT"
|
|
94
|
+
}
|
package/setup.bat
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
echo.
|
|
3
|
+
echo ========================================
|
|
4
|
+
echo AI Mind Map - One-Click Setup
|
|
5
|
+
echo Token Optimization MCP Server
|
|
6
|
+
echo ========================================
|
|
7
|
+
echo.
|
|
8
|
+
|
|
9
|
+
:: Check Node.js
|
|
10
|
+
where node >nul 2>nul
|
|
11
|
+
if %ERRORLEVEL% neq 0 (
|
|
12
|
+
echo [ERROR] Node.js is not installed!
|
|
13
|
+
echo Please install Node.js from: https://nodejs.org
|
|
14
|
+
echo Minimum version: 18.0.0
|
|
15
|
+
pause
|
|
16
|
+
exit /b 1
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
:: Check Node version
|
|
20
|
+
for /f "tokens=1 delims=v" %%i in ('node -v') do set NODE_VER=%%i
|
|
21
|
+
echo [OK] Node.js found: v%NODE_VER%
|
|
22
|
+
|
|
23
|
+
:: Install dependencies
|
|
24
|
+
echo.
|
|
25
|
+
echo [1/3] Installing dependencies...
|
|
26
|
+
call npm install --legacy-peer-deps
|
|
27
|
+
if %ERRORLEVEL% neq 0 (
|
|
28
|
+
echo [ERROR] npm install failed!
|
|
29
|
+
pause
|
|
30
|
+
exit /b 1
|
|
31
|
+
)
|
|
32
|
+
echo [OK] Dependencies installed
|
|
33
|
+
|
|
34
|
+
:: Build TypeScript
|
|
35
|
+
echo.
|
|
36
|
+
echo [2/3] Building TypeScript...
|
|
37
|
+
call npx tsc
|
|
38
|
+
if %ERRORLEVEL% neq 0 (
|
|
39
|
+
echo [ERROR] Build failed!
|
|
40
|
+
pause
|
|
41
|
+
exit /b 1
|
|
42
|
+
)
|
|
43
|
+
echo [OK] Build complete
|
|
44
|
+
|
|
45
|
+
:: Get absolute path
|
|
46
|
+
set MINDMAP_PATH=%~dp0dist\index.js
|
|
47
|
+
echo.
|
|
48
|
+
echo [3/3] Setup complete!
|
|
49
|
+
echo.
|
|
50
|
+
echo ========================================
|
|
51
|
+
echo INSTALLATION SUCCESSFUL!
|
|
52
|
+
echo ========================================
|
|
53
|
+
echo.
|
|
54
|
+
echo Server path: %MINDMAP_PATH%
|
|
55
|
+
echo.
|
|
56
|
+
echo Next: Add this MCP server to your AI agent.
|
|
57
|
+
echo See README.md for configuration instructions.
|
|
58
|
+
echo.
|
|
59
|
+
echo Quick test:
|
|
60
|
+
echo node "%MINDMAP_PATH%" --project-root "YOUR_PROJECT_PATH"
|
|
61
|
+
echo.
|
|
62
|
+
pause
|