@stackmemoryai/stackmemory 0.3.17 โ 0.3.18
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/dist/cli/commands/skills.js +15 -2
- package/dist/cli/commands/skills.js.map +2 -2
- package/dist/cli/index.js +113 -834
- package/dist/cli/index.js.map +3 -3
- package/dist/core/context/dual-stack-manager.js +1 -1
- package/dist/core/context/dual-stack-manager.js.map +1 -1
- package/dist/core/context/frame-manager.js +3 -0
- package/dist/core/context/frame-manager.js.map +2 -2
- package/dist/integrations/claude-code/subagent-client.js +106 -3
- package/dist/integrations/claude-code/subagent-client.js.map +2 -2
- package/dist/servers/railway/config.js +51 -0
- package/dist/servers/railway/config.js.map +7 -0
- package/dist/servers/railway/index-enhanced.js +156 -0
- package/dist/servers/railway/index-enhanced.js.map +7 -0
- package/dist/servers/railway/minimal.js +48 -3
- package/dist/servers/railway/minimal.js.map +2 -2
- package/dist/servers/railway/storage-test.js +455 -0
- package/dist/servers/railway/storage-test.js.map +7 -0
- package/dist/skills/claude-skills.js +13 -12
- package/dist/skills/claude-skills.js.map +2 -2
- package/dist/skills/recursive-agent-orchestrator.js +27 -18
- package/dist/skills/recursive-agent-orchestrator.js.map +2 -2
- package/dist/skills/unified-rlm-orchestrator.js.map +2 -2
- package/package.json +6 -18
- package/scripts/README-TESTING.md +186 -0
- package/scripts/analyze-cli-security.js +288 -0
- package/scripts/archive/add-phase-tasks-to-linear.js +163 -0
- package/scripts/archive/analyze-linear-duplicates.js +214 -0
- package/scripts/archive/analyze-remaining-duplicates.js +230 -0
- package/scripts/archive/analyze-sta-duplicates.js +292 -0
- package/scripts/archive/analyze-sta-graphql.js +399 -0
- package/scripts/archive/cancel-duplicate-tasks.ts +246 -0
- package/scripts/archive/check-all-duplicates.ts +419 -0
- package/scripts/archive/clean-duplicate-tasks.js +114 -0
- package/scripts/archive/cleanup-duplicate-tasks.ts +286 -0
- package/scripts/archive/create-phase-tasks.js +387 -0
- package/scripts/archive/delete-linear-duplicates.js +182 -0
- package/scripts/archive/delete-remaining-duplicates.js +158 -0
- package/scripts/archive/delete-sta-duplicates.js +201 -0
- package/scripts/archive/delete-sta-oauth.js +201 -0
- package/scripts/archive/export-sta-tasks.js +62 -0
- package/scripts/archive/install-auto-sync.js +266 -0
- package/scripts/archive/install-chromadb-hooks.sh +133 -0
- package/scripts/archive/install-enhanced-clear-hooks.sh +431 -0
- package/scripts/archive/install-post-task-hooks.sh +289 -0
- package/scripts/archive/install-stackmemory-hooks.sh +420 -0
- package/scripts/archive/merge-linear-duplicates-safe.ts +362 -0
- package/scripts/archive/merge-linear-duplicates.ts +180 -0
- package/scripts/archive/remove-sta-tasks.js +70 -0
- package/scripts/archive/setup-background-sync.sh +168 -0
- package/scripts/archive/setup-claude-auto-triggers.sh +181 -0
- package/scripts/archive/setup-claude-autostart.sh +305 -0
- package/scripts/archive/setup-git-hooks.sh +25 -0
- package/scripts/archive/setup-linear-oauth.sh +46 -0
- package/scripts/archive/setup-mcp.sh +113 -0
- package/scripts/archive/setup-railway-deployment.sh +81 -0
- package/scripts/auto-handoff.sh +262 -0
- package/scripts/background-sync-manager.js +416 -0
- package/scripts/benchmark-performance.ts +57 -0
- package/scripts/check-redis.ts +48 -0
- package/scripts/chromadb-auto-loader.sh +128 -0
- package/scripts/chromadb-context-loader.js +479 -0
- package/scripts/claude-chromadb-hook.js +460 -0
- package/scripts/claude-code-wrapper.sh +66 -0
- package/scripts/claude-linear-skill.js +455 -0
- package/scripts/claude-pre-commit.sh +302 -0
- package/scripts/claude-sm-autostart.js +532 -0
- package/scripts/claude-sm-setup.sh +367 -0
- package/scripts/claude-with-chromadb.sh +69 -0
- package/scripts/claude-worktree-manager.sh +323 -0
- package/scripts/claude-worktree-monitor.sh +371 -0
- package/scripts/claude-worktree-setup.sh +327 -0
- package/scripts/clean-linear-backlog.js +273 -0
- package/scripts/cleanup-old-sessions.sh +57 -0
- package/scripts/codex-wrapper.sh +88 -0
- package/scripts/create-sandbox.sh +269 -0
- package/scripts/debug-linear-update.js +174 -0
- package/scripts/delete-linear-tasks.js +167 -0
- package/scripts/deploy.sh +89 -0
- package/scripts/deployment/railway.sh +352 -0
- package/scripts/deployment/test-deployment.js +194 -0
- package/scripts/detect-and-rehydrate.js +162 -0
- package/scripts/detect-and-rehydrate.mjs +165 -0
- package/scripts/development/create-demo-tasks.js +143 -0
- package/scripts/development/debug-frame-test.js +16 -0
- package/scripts/development/demo-auto-sync.js +128 -0
- package/scripts/development/fix-all-imports.js +213 -0
- package/scripts/development/fix-imports.js +229 -0
- package/scripts/development/fix-lint-loop.cjs +103 -0
- package/scripts/development/fix-project-id.ts +161 -0
- package/scripts/development/fix-strict-mode-issues.ts +291 -0
- package/scripts/development/reorganize-structure.sh +228 -0
- package/scripts/development/test-persistence-direct.js +148 -0
- package/scripts/development/test-persistence.js +114 -0
- package/scripts/development/test-tasks.js +93 -0
- package/scripts/development/update-imports.js +212 -0
- package/scripts/fetch-linear-status.js +125 -0
- package/scripts/git-hooks/README.md +310 -0
- package/scripts/git-hooks/branch-context-manager.sh +342 -0
- package/scripts/git-hooks/post-checkout-stackmemory.sh +63 -0
- package/scripts/git-hooks/post-commit-stackmemory.sh +305 -0
- package/scripts/git-hooks/pre-commit-stackmemory.sh +275 -0
- package/scripts/hooks/cleanup-shell.sh +130 -0
- package/scripts/hooks/task-complete.sh +114 -0
- package/scripts/initialize.ts +129 -0
- package/scripts/install-claude-hooks-auto.js +104 -0
- package/scripts/install-claude-hooks.sh +133 -0
- package/scripts/install-global.sh +296 -0
- package/scripts/install.sh +235 -0
- package/scripts/linear-auto-sync.js +262 -0
- package/scripts/linear-auto-sync.sh +161 -0
- package/scripts/linear-sync-daemon.js +150 -0
- package/scripts/linear-task-review.js +237 -0
- package/scripts/list-linear-tasks.ts +178 -0
- package/scripts/mcp-proxy.js +66 -0
- package/scripts/opencode-wrapper.sh +85 -0
- package/scripts/publish-local.js +74 -0
- package/scripts/query-chromadb.ts +201 -0
- package/scripts/railway-env-setup.sh +39 -0
- package/scripts/reconcile-local-tasks.js +170 -0
- package/scripts/recreate-frames-db.js +89 -0
- package/scripts/setup/claude-integration.js +138 -0
- package/scripts/setup/configure-alias.js +125 -0
- package/scripts/setup/configure-codex-alias.js +161 -0
- package/scripts/setup/configure-opencode-alias.js +175 -0
- package/scripts/setup-claude-integration.js +204 -0
- package/scripts/setup-claude-integration.sh +183 -0
- package/scripts/setup.sh +31 -0
- package/scripts/show-linear-summary.ts +172 -0
- package/scripts/stackmemory-auto-handoff.sh +231 -0
- package/scripts/stackmemory-daemon.sh +40 -0
- package/scripts/start-linear-sync-daemon.sh +141 -0
- package/scripts/start-temporal-paradox.sh +214 -0
- package/scripts/status.ts +159 -0
- package/scripts/sync-and-clean-tasks.js +258 -0
- package/scripts/sync-frames-from-railway.js +228 -0
- package/scripts/sync-linear-graphql.js +303 -0
- package/scripts/sync-linear-tasks.js +186 -0
- package/scripts/test-auto-triggers.sh +57 -0
- package/scripts/test-browser-mcp.js +74 -0
- package/scripts/test-chromadb-full.js +115 -0
- package/scripts/test-chromadb-hooks.sh +28 -0
- package/scripts/test-chromadb-sync.ts +245 -0
- package/scripts/test-cli-security.js +293 -0
- package/scripts/test-hooks-persistence.sh +220 -0
- package/scripts/test-installation-scenarios.sh +359 -0
- package/scripts/test-installation.sh +224 -0
- package/scripts/test-mcp.js +163 -0
- package/scripts/test-pre-publish-quick.sh +75 -0
- package/scripts/test-quality-gates.sh +263 -0
- package/scripts/test-railway-db.js +222 -0
- package/scripts/test-redis-storage.ts +490 -0
- package/scripts/test-rlm-basic.sh +122 -0
- package/scripts/test-rlm-comprehensive.sh +260 -0
- package/scripts/test-rlm-e2e.sh +268 -0
- package/scripts/test-rlm-simple.js +90 -0
- package/scripts/test-rlm.js +110 -0
- package/scripts/test-session-handoff.sh +165 -0
- package/scripts/test-shell-integration.sh +275 -0
- package/scripts/testing/ab-test-runner.ts +508 -0
- package/scripts/testing/collect-metrics.ts +457 -0
- package/scripts/testing/quick-effectiveness-demo.js +187 -0
- package/scripts/testing/real-performance-test.js +422 -0
- package/scripts/testing/run-effectiveness-tests.sh +176 -0
- package/scripts/testing/scripts/testing/ab-test-runner.js +363 -0
- package/scripts/testing/scripts/testing/collect-metrics.js +292 -0
- package/scripts/testing/simple-effectiveness-test.js +310 -0
- package/scripts/testing/src/core/context/context-bridge.js +253 -0
- package/scripts/testing/src/core/context/frame-manager.js +746 -0
- package/scripts/testing/src/core/context/shared-context-layer.js +437 -0
- package/scripts/testing/src/core/database/database-adapter.js +54 -0
- package/scripts/testing/src/core/errors/index.js +291 -0
- package/scripts/testing/src/core/errors/recovery.js +268 -0
- package/scripts/testing/src/core/monitoring/logger.js +145 -0
- package/scripts/testing/src/core/retrieval/context-retriever.js +516 -0
- package/scripts/testing/src/core/session/index.js +1 -0
- package/scripts/testing/src/core/session/session-manager.js +323 -0
- package/scripts/testing/src/core/trace/cli-trace-wrapper.js +140 -0
- package/scripts/testing/src/core/trace/db-trace-wrapper.js +251 -0
- package/scripts/testing/src/core/trace/debug-trace.js +398 -0
- package/scripts/testing/src/core/trace/index.js +120 -0
- package/scripts/testing/src/core/trace/linear-api-wrapper.js +204 -0
- package/scripts/update-linear-status.js +268 -0
- package/scripts/update-linear-tasks-fixed.js +284 -0
- package/templates/claude-hooks/hooks.json +5 -0
- package/templates/claude-hooks/on-clear.js +56 -0
- package/templates/claude-hooks/on-startup.js +56 -0
- package/templates/claude-hooks/tool-use-trace.js +67 -0
- package/dist/features/tui/components/analytics-panel.js +0 -157
- package/dist/features/tui/components/analytics-panel.js.map +0 -7
- package/dist/features/tui/components/frame-visualizer.js +0 -377
- package/dist/features/tui/components/frame-visualizer.js.map +0 -7
- package/dist/features/tui/components/pr-tracker.js +0 -135
- package/dist/features/tui/components/pr-tracker.js.map +0 -7
- package/dist/features/tui/components/session-monitor.js +0 -299
- package/dist/features/tui/components/session-monitor.js.map +0 -7
- package/dist/features/tui/components/subagent-fleet.js +0 -395
- package/dist/features/tui/components/subagent-fleet.js.map +0 -7
- package/dist/features/tui/components/task-board.js +0 -1139
- package/dist/features/tui/components/task-board.js.map +0 -7
- package/dist/features/tui/index.js +0 -408
- package/dist/features/tui/index.js.map +0 -7
- package/dist/features/tui/services/data-service.js +0 -641
- package/dist/features/tui/services/data-service.js.map +0 -7
- package/dist/features/tui/services/linear-task-reader.js +0 -102
- package/dist/features/tui/services/linear-task-reader.js.map +0 -7
- package/dist/features/tui/services/websocket-client.js +0 -162
- package/dist/features/tui/services/websocket-client.js.map +0 -7
- package/dist/features/tui/terminal-compat.js +0 -220
- package/dist/features/tui/terminal-compat.js.map +0 -7
- package/dist/features/tui/types.js +0 -1
- package/dist/features/tui/types.js.map +0 -7
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Setup script for StackMemory Background Sync
|
|
4
|
+
# Configures automatic background syncing via cron or launchd
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
8
|
+
|
|
9
|
+
echo "๐ StackMemory Background Sync Setup"
|
|
10
|
+
echo "===================================="
|
|
11
|
+
echo ""
|
|
12
|
+
|
|
13
|
+
# Detect OS
|
|
14
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
15
|
+
OS="macos"
|
|
16
|
+
echo "โ
Detected macOS - will use launchd"
|
|
17
|
+
else
|
|
18
|
+
OS="linux"
|
|
19
|
+
echo "โ
Detected Linux - will use cron"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Check for Node.js
|
|
23
|
+
if ! command -v node &> /dev/null; then
|
|
24
|
+
echo "โ Node.js is required but not installed"
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
echo ""
|
|
29
|
+
echo "๐ Available sync tasks:"
|
|
30
|
+
echo " 1. Linear task sync (hourly)"
|
|
31
|
+
echo " 2. Context & frame sync (15 min)"
|
|
32
|
+
echo " 3. Cloud backup (4 hours)"
|
|
33
|
+
echo " 4. Redis cache sync (5 min)"
|
|
34
|
+
echo " 5. Cross-session sync (10 min)"
|
|
35
|
+
echo ""
|
|
36
|
+
|
|
37
|
+
if [ "$OS" == "macos" ]; then
|
|
38
|
+
# macOS - Create launchd plist
|
|
39
|
+
PLIST_FILE="$HOME/Library/LaunchAgents/com.stackmemory.sync.plist"
|
|
40
|
+
|
|
41
|
+
echo "Creating launchd service..."
|
|
42
|
+
|
|
43
|
+
cat > "$PLIST_FILE" << EOF
|
|
44
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
45
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
46
|
+
<plist version="1.0">
|
|
47
|
+
<dict>
|
|
48
|
+
<key>Label</key>
|
|
49
|
+
<string>com.stackmemory.sync</string>
|
|
50
|
+
|
|
51
|
+
<key>ProgramArguments</key>
|
|
52
|
+
<array>
|
|
53
|
+
<string>/usr/local/bin/node</string>
|
|
54
|
+
<string>$PROJECT_DIR/scripts/background-sync-manager.js</string>
|
|
55
|
+
</array>
|
|
56
|
+
|
|
57
|
+
<key>WorkingDirectory</key>
|
|
58
|
+
<string>$PROJECT_DIR</string>
|
|
59
|
+
|
|
60
|
+
<key>RunAtLoad</key>
|
|
61
|
+
<true/>
|
|
62
|
+
|
|
63
|
+
<key>KeepAlive</key>
|
|
64
|
+
<true/>
|
|
65
|
+
|
|
66
|
+
<key>StandardOutPath</key>
|
|
67
|
+
<string>$HOME/.stackmemory/sync-output.log</string>
|
|
68
|
+
|
|
69
|
+
<key>StandardErrorPath</key>
|
|
70
|
+
<string>$HOME/.stackmemory/sync-error.log</string>
|
|
71
|
+
|
|
72
|
+
<key>EnvironmentVariables</key>
|
|
73
|
+
<dict>
|
|
74
|
+
<key>PATH</key>
|
|
75
|
+
<string>/usr/local/bin:/usr/bin:/bin</string>
|
|
76
|
+
<key>HOME</key>
|
|
77
|
+
<string>$HOME</string>
|
|
78
|
+
</dict>
|
|
79
|
+
</dict>
|
|
80
|
+
</plist>
|
|
81
|
+
EOF
|
|
82
|
+
|
|
83
|
+
echo "โ
Launchd service created"
|
|
84
|
+
echo ""
|
|
85
|
+
echo "To start the service now:"
|
|
86
|
+
echo " launchctl load $PLIST_FILE"
|
|
87
|
+
echo ""
|
|
88
|
+
echo "To stop the service:"
|
|
89
|
+
echo " launchctl unload $PLIST_FILE"
|
|
90
|
+
echo ""
|
|
91
|
+
echo "The service will start automatically on login."
|
|
92
|
+
|
|
93
|
+
else
|
|
94
|
+
# Linux - Create cron jobs
|
|
95
|
+
echo "Setting up cron jobs..."
|
|
96
|
+
|
|
97
|
+
# Create cron entries
|
|
98
|
+
CRON_ENTRIES=""
|
|
99
|
+
|
|
100
|
+
# Linear sync - every hour
|
|
101
|
+
CRON_ENTRIES="$CRON_ENTRIES
|
|
102
|
+
0 * * * * cd $PROJECT_DIR && /usr/bin/node scripts/sync-linear-graphql.js >> $HOME/.stackmemory/linear-sync.log 2>&1"
|
|
103
|
+
|
|
104
|
+
# Context sync - every 15 minutes
|
|
105
|
+
CRON_ENTRIES="$CRON_ENTRIES
|
|
106
|
+
*/15 * * * * cd $PROJECT_DIR && /usr/bin/node scripts/sync-context.js >> $HOME/.stackmemory/context-sync.log 2>&1"
|
|
107
|
+
|
|
108
|
+
# Backup - every 4 hours
|
|
109
|
+
CRON_ENTRIES="$CRON_ENTRIES
|
|
110
|
+
0 */4 * * * cd $PROJECT_DIR && /usr/bin/node scripts/backup-stackmemory.js >> $HOME/.stackmemory/backup.log 2>&1"
|
|
111
|
+
|
|
112
|
+
# Add to crontab
|
|
113
|
+
(crontab -l 2>/dev/null | grep -v "stackmemory"; echo "$CRON_ENTRIES") | crontab -
|
|
114
|
+
|
|
115
|
+
echo "โ
Cron jobs created"
|
|
116
|
+
echo ""
|
|
117
|
+
echo "Current cron jobs:"
|
|
118
|
+
crontab -l | grep stackmemory
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# Create convenience scripts
|
|
122
|
+
cat > "$PROJECT_DIR/sync-status.sh" << 'EOF'
|
|
123
|
+
#!/bin/bash
|
|
124
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
125
|
+
launchctl list | grep stackmemory
|
|
126
|
+
else
|
|
127
|
+
ps aux | grep -E "background-sync-manager|sync-linear" | grep -v grep
|
|
128
|
+
fi
|
|
129
|
+
EOF
|
|
130
|
+
chmod +x "$PROJECT_DIR/sync-status.sh"
|
|
131
|
+
|
|
132
|
+
cat > "$PROJECT_DIR/sync-logs.sh" << 'EOF'
|
|
133
|
+
#!/bin/bash
|
|
134
|
+
LOG_DIR="$HOME/.stackmemory"
|
|
135
|
+
echo "๐ Recent sync activity:"
|
|
136
|
+
echo ""
|
|
137
|
+
if [ -f "$LOG_DIR/sync-manager.log" ]; then
|
|
138
|
+
tail -20 "$LOG_DIR/sync-manager.log"
|
|
139
|
+
fi
|
|
140
|
+
EOF
|
|
141
|
+
chmod +x "$PROJECT_DIR/sync-logs.sh"
|
|
142
|
+
|
|
143
|
+
echo ""
|
|
144
|
+
echo "โ
Setup complete!"
|
|
145
|
+
echo ""
|
|
146
|
+
echo "๐ Useful commands:"
|
|
147
|
+
echo " ./sync-status.sh - Check sync status"
|
|
148
|
+
echo " ./sync-logs.sh - View sync logs"
|
|
149
|
+
echo ""
|
|
150
|
+
echo "๐ Environment variables to set in .env:"
|
|
151
|
+
echo " LINEAR_API_KEY - For Linear sync"
|
|
152
|
+
echo " REDIS_URL - For Redis cache (optional)"
|
|
153
|
+
echo " AWS_S3_BUCKET - For S3 backup (optional)"
|
|
154
|
+
echo " GCS_BUCKET - For GCS backup (optional)"
|
|
155
|
+
echo ""
|
|
156
|
+
|
|
157
|
+
# Ask to start now
|
|
158
|
+
read -p "Start background sync now? (y/n) " -n 1 -r
|
|
159
|
+
echo
|
|
160
|
+
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
161
|
+
if [ "$OS" == "macos" ]; then
|
|
162
|
+
launchctl load "$HOME/Library/LaunchAgents/com.stackmemory.sync.plist"
|
|
163
|
+
echo "โ
Background sync started!"
|
|
164
|
+
else
|
|
165
|
+
nohup node "$PROJECT_DIR/scripts/background-sync-manager.js" > "$HOME/.stackmemory/sync-manager.log" 2>&1 &
|
|
166
|
+
echo "โ
Background sync started! PID: $!"
|
|
167
|
+
fi
|
|
168
|
+
fi
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# StackMemory Auto-Triggers Setup for Claude Code
|
|
4
|
+
# Sets up automatic context saving and session handoffs
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
echo "๐ StackMemory Auto-Triggers Setup for Claude Code"
|
|
9
|
+
echo "=================================================="
|
|
10
|
+
echo ""
|
|
11
|
+
|
|
12
|
+
# Check if StackMemory is installed
|
|
13
|
+
if ! command -v stackmemory &> /dev/null; then
|
|
14
|
+
echo "โ StackMemory is not installed"
|
|
15
|
+
echo "Install with: npm install -g @stackmemoryai/stackmemory"
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Check if in a project directory
|
|
20
|
+
if [ ! -d ".stackmemory" ]; then
|
|
21
|
+
echo "โ ๏ธ StackMemory not initialized in this directory"
|
|
22
|
+
echo "Run: stackmemory init"
|
|
23
|
+
read -p "Initialize now? (y/n): " -n 1 -r
|
|
24
|
+
echo
|
|
25
|
+
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
26
|
+
stackmemory init
|
|
27
|
+
else
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
echo "โ
StackMemory detected"
|
|
33
|
+
echo ""
|
|
34
|
+
|
|
35
|
+
# Configure auto-triggers
|
|
36
|
+
echo "๐ Configuring auto-triggers..."
|
|
37
|
+
|
|
38
|
+
# Create config if it doesn't exist
|
|
39
|
+
CONFIG_FILE=".stackmemory/config.json"
|
|
40
|
+
if [ ! -f "$CONFIG_FILE" ]; then
|
|
41
|
+
echo '{}' > "$CONFIG_FILE"
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
# Update config with auto-trigger settings
|
|
45
|
+
node -e "
|
|
46
|
+
const fs = require('fs');
|
|
47
|
+
const config = JSON.parse(fs.readFileSync('$CONFIG_FILE', 'utf8'));
|
|
48
|
+
|
|
49
|
+
// Monitor settings
|
|
50
|
+
config.monitor = {
|
|
51
|
+
...config.monitor,
|
|
52
|
+
contextWarningThreshold: 0.6,
|
|
53
|
+
contextCriticalThreshold: 0.7,
|
|
54
|
+
contextAutoSaveThreshold: 0.85,
|
|
55
|
+
checkIntervalSeconds: 30,
|
|
56
|
+
idleTimeoutMinutes: 5,
|
|
57
|
+
autoSaveLedger: true,
|
|
58
|
+
autoGenerateHandoff: true,
|
|
59
|
+
sessionEndHandoff: true
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// Clear survival settings
|
|
63
|
+
config.clearSurvival = {
|
|
64
|
+
...config.clearSurvival,
|
|
65
|
+
autoSave: true,
|
|
66
|
+
autoSaveThreshold: 0.7
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Handoff settings
|
|
70
|
+
config.handoff = {
|
|
71
|
+
...config.handoff,
|
|
72
|
+
autoGenerate: true,
|
|
73
|
+
idleThresholdMinutes: 5
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
fs.writeFileSync('$CONFIG_FILE', JSON.stringify(config, null, 2));
|
|
77
|
+
console.log('โ
Configuration updated');
|
|
78
|
+
"
|
|
79
|
+
|
|
80
|
+
# Install Claude Code hooks
|
|
81
|
+
echo ""
|
|
82
|
+
echo "๐ฆ Installing Claude Code hooks..."
|
|
83
|
+
|
|
84
|
+
CLAUDE_HOOKS_DIR="$HOME/.claude/hooks"
|
|
85
|
+
mkdir -p "$CLAUDE_HOOKS_DIR"
|
|
86
|
+
|
|
87
|
+
# Create on-startup hook
|
|
88
|
+
cat > "$CLAUDE_HOOKS_DIR/on-startup" << 'EOF'
|
|
89
|
+
#!/bin/bash
|
|
90
|
+
# Auto-start StackMemory monitor on Claude Code startup
|
|
91
|
+
|
|
92
|
+
# Start monitor if project has StackMemory
|
|
93
|
+
if [ -d ".stackmemory" ]; then
|
|
94
|
+
stackmemory monitor --start 2>/dev/null || true
|
|
95
|
+
echo "๐ StackMemory monitor started"
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
# Load previous handoff if exists
|
|
99
|
+
if [ -d ".stackmemory/handoffs" ]; then
|
|
100
|
+
stackmemory handoff --load 2>/dev/null || true
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
# Check and restore from ledger if needed
|
|
104
|
+
stackmemory clear --restore 2>/dev/null || true
|
|
105
|
+
EOF
|
|
106
|
+
chmod +x "$CLAUDE_HOOKS_DIR/on-startup"
|
|
107
|
+
|
|
108
|
+
# Create on-message hook
|
|
109
|
+
cat > "$CLAUDE_HOOKS_DIR/on-message" << 'EOF'
|
|
110
|
+
#!/bin/bash
|
|
111
|
+
# Update activity and check context on each message
|
|
112
|
+
|
|
113
|
+
# Update activity timestamp
|
|
114
|
+
stackmemory monitor --activity 2>/dev/null || true
|
|
115
|
+
|
|
116
|
+
# Check context usage (silent unless critical)
|
|
117
|
+
CONTEXT_STATUS=$(stackmemory clear --check 2>/dev/null | grep -o '[0-9]\+%' | head -1 | tr -d '%' || echo "0")
|
|
118
|
+
if [ "${CONTEXT_STATUS:-0}" -gt 85 ]; then
|
|
119
|
+
echo "๐ด Critical: Context at ${CONTEXT_STATUS}% - Auto-saving..."
|
|
120
|
+
stackmemory clear --save >/dev/null 2>&1
|
|
121
|
+
elif [ "${CONTEXT_STATUS:-0}" -gt 70 ]; then
|
|
122
|
+
echo "โ ๏ธ Warning: Context at ${CONTEXT_STATUS}% - Consider saving"
|
|
123
|
+
fi
|
|
124
|
+
EOF
|
|
125
|
+
chmod +x "$CLAUDE_HOOKS_DIR/on-message"
|
|
126
|
+
|
|
127
|
+
# Create on-clear hook
|
|
128
|
+
cat > "$CLAUDE_HOOKS_DIR/on-clear" << 'EOF'
|
|
129
|
+
#!/bin/bash
|
|
130
|
+
# Save state before /clear command
|
|
131
|
+
|
|
132
|
+
echo "๐ Preparing for /clear..."
|
|
133
|
+
stackmemory clear --save >/dev/null 2>&1 && echo "โ
Ledger saved"
|
|
134
|
+
stackmemory handoff --generate >/dev/null 2>&1 && echo "โ
Handoff saved"
|
|
135
|
+
echo "๐ก After /clear, run: stackmemory clear --restore"
|
|
136
|
+
EOF
|
|
137
|
+
chmod +x "$CLAUDE_HOOKS_DIR/on-clear"
|
|
138
|
+
|
|
139
|
+
# Create on-exit hook
|
|
140
|
+
cat > "$CLAUDE_HOOKS_DIR/on-exit" << 'EOF'
|
|
141
|
+
#!/bin/bash
|
|
142
|
+
# Save session state on exit
|
|
143
|
+
|
|
144
|
+
echo "๐ฆ Saving session state..."
|
|
145
|
+
stackmemory handoff --generate >/dev/null 2>&1
|
|
146
|
+
stackmemory monitor --stop 2>/dev/null || true
|
|
147
|
+
echo "โ
Session preserved"
|
|
148
|
+
EOF
|
|
149
|
+
chmod +x "$CLAUDE_HOOKS_DIR/on-exit"
|
|
150
|
+
|
|
151
|
+
echo "โ
Claude Code hooks installed"
|
|
152
|
+
echo ""
|
|
153
|
+
|
|
154
|
+
# Start monitor daemon
|
|
155
|
+
echo "๐ Starting background monitor..."
|
|
156
|
+
stackmemory monitor --start
|
|
157
|
+
|
|
158
|
+
echo ""
|
|
159
|
+
echo "โ
Setup complete!"
|
|
160
|
+
echo ""
|
|
161
|
+
echo "๐ What's been configured:"
|
|
162
|
+
echo " โข Auto-save ledger at 85% context usage"
|
|
163
|
+
echo " โข Warning at 60%, critical at 70%"
|
|
164
|
+
echo " โข Handoff generation after 5min idle"
|
|
165
|
+
echo " โข Session preservation on exit"
|
|
166
|
+
echo " โข Automatic /clear preparation"
|
|
167
|
+
echo ""
|
|
168
|
+
echo "๐ Available commands:"
|
|
169
|
+
echo " stackmemory monitor --status # Check monitor status"
|
|
170
|
+
echo " stackmemory clear --status # Check context usage"
|
|
171
|
+
echo " stackmemory handoff --show # View last handoff"
|
|
172
|
+
echo " stackmemory workflow --list # List workflows"
|
|
173
|
+
echo ""
|
|
174
|
+
echo "๐ฏ Next steps:"
|
|
175
|
+
echo " 1. Context will be monitored automatically"
|
|
176
|
+
echo " 2. Ledgers save at 85% usage"
|
|
177
|
+
echo " 3. Use /clear when prompted"
|
|
178
|
+
echo " 4. Run 'stackmemory clear --restore' after /clear"
|
|
179
|
+
echo ""
|
|
180
|
+
echo "๐ก Tip: Monitor is now running in background"
|
|
181
|
+
echo " Stop with: stackmemory monitor --stop"
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Setup script for Claude Auto-Start Integration
|
|
4
|
+
# Installs hooks and configures auto-start daemons for Claude Code
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
8
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
9
|
+
HOOKS_DIR="$CLAUDE_DIR/hooks"
|
|
10
|
+
STACKMEMORY_DIR="$HOME/.stackmemory"
|
|
11
|
+
|
|
12
|
+
echo "๐ Claude StackMemory Auto-Start Setup"
|
|
13
|
+
echo "======================================="
|
|
14
|
+
echo ""
|
|
15
|
+
|
|
16
|
+
# Create necessary directories
|
|
17
|
+
echo "๐ Creating directories..."
|
|
18
|
+
mkdir -p "$CLAUDE_DIR"
|
|
19
|
+
mkdir -p "$HOOKS_DIR"
|
|
20
|
+
mkdir -p "$STACKMEMORY_DIR/logs"
|
|
21
|
+
mkdir -p "$STACKMEMORY_DIR/daemons"
|
|
22
|
+
|
|
23
|
+
# Check for Node.js
|
|
24
|
+
if ! command -v node &> /dev/null; then
|
|
25
|
+
echo "โ Node.js is required but not installed"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "โ
Node.js found: $(node --version)"
|
|
30
|
+
|
|
31
|
+
# Install dependencies if needed
|
|
32
|
+
echo ""
|
|
33
|
+
echo "๐ฆ Checking dependencies..."
|
|
34
|
+
cd "$PROJECT_DIR"
|
|
35
|
+
if [ ! -d "node_modules/chokidar" ]; then
|
|
36
|
+
echo "Installing required dependencies..."
|
|
37
|
+
npm install chokidar dotenv express ioredis --save-dev
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Create Claude hook for project load
|
|
41
|
+
echo ""
|
|
42
|
+
echo "๐ช Setting up Claude hooks..."
|
|
43
|
+
|
|
44
|
+
# Create the on-project-open hook
|
|
45
|
+
cat > "$HOOKS_DIR/on-project-open" << 'EOF'
|
|
46
|
+
#!/bin/bash
|
|
47
|
+
# Claude hook: Auto-start StackMemory daemons when project opens
|
|
48
|
+
|
|
49
|
+
PROJECT_PATH="$1"
|
|
50
|
+
PROJECT_NAME="$(basename "$PROJECT_PATH")"
|
|
51
|
+
|
|
52
|
+
# Check if this is the stackmemory project
|
|
53
|
+
if [[ "$PROJECT_NAME" == "stackmemory" ]] || [[ -f "$PROJECT_PATH/package.json" && $(grep -q '"name".*"stackmemory"' "$PROJECT_PATH/package.json"; echo $?) -eq 0 ]]; then
|
|
54
|
+
echo "๐ StackMemory project detected - starting daemons..."
|
|
55
|
+
|
|
56
|
+
# Check if daemons are already running
|
|
57
|
+
PID_FILE="$HOME/.stackmemory/claude-daemons.pid"
|
|
58
|
+
if [ -f "$PID_FILE" ]; then
|
|
59
|
+
PID=$(cat "$PID_FILE")
|
|
60
|
+
if kill -0 "$PID" 2>/dev/null; then
|
|
61
|
+
echo "โ
Daemons already running (PID: $PID)"
|
|
62
|
+
exit 0
|
|
63
|
+
fi
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Start the auto-start manager
|
|
67
|
+
cd "$PROJECT_PATH"
|
|
68
|
+
nohup node scripts/claude-sm-autostart.js > "$HOME/.stackmemory/logs/autostart.log" 2>&1 &
|
|
69
|
+
echo $! > "$PID_FILE"
|
|
70
|
+
echo "โ
Claude daemons started (PID: $!)"
|
|
71
|
+
|
|
72
|
+
# Also start the background sync manager if configured
|
|
73
|
+
if [ -f "$PROJECT_PATH/.env" ] && grep -q "ENABLE_BACKGROUND_SYNC=true" "$PROJECT_PATH/.env"; then
|
|
74
|
+
nohup node scripts/background-sync-manager.js > "$HOME/.stackmemory/logs/sync-manager.log" 2>&1 &
|
|
75
|
+
echo "โ
Background sync manager started"
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Initialize ChromaDB hooks if configured
|
|
79
|
+
if [ -f "$PROJECT_PATH/.env" ] && grep -q "CHROMADB_API_KEY" "$PROJECT_PATH/.env"; then
|
|
80
|
+
echo "๐ Initializing ChromaDB context preservation..."
|
|
81
|
+
# Trigger initial context save
|
|
82
|
+
"$HOME/.claude/hooks/on-checkpoint" 2>/dev/null &
|
|
83
|
+
echo "โ
ChromaDB hooks activated"
|
|
84
|
+
fi
|
|
85
|
+
fi
|
|
86
|
+
EOF
|
|
87
|
+
|
|
88
|
+
chmod +x "$HOOKS_DIR/on-project-open"
|
|
89
|
+
|
|
90
|
+
# Create the on-project-close hook
|
|
91
|
+
cat > "$HOOKS_DIR/on-project-close" << 'EOF'
|
|
92
|
+
#!/bin/bash
|
|
93
|
+
# Claude hook: Stop StackMemory daemons when project closes
|
|
94
|
+
|
|
95
|
+
PROJECT_PATH="$1"
|
|
96
|
+
PROJECT_NAME="$(basename "$PROJECT_PATH")"
|
|
97
|
+
|
|
98
|
+
if [[ "$PROJECT_NAME" == "stackmemory" ]] || [[ -f "$PROJECT_PATH/package.json" && $(grep -q '"name".*"stackmemory"' "$PROJECT_PATH/package.json"; echo $?) -eq 0 ]]; then
|
|
99
|
+
echo "๐ Stopping StackMemory daemons..."
|
|
100
|
+
|
|
101
|
+
PID_FILE="$HOME/.stackmemory/claude-daemons.pid"
|
|
102
|
+
if [ -f "$PID_FILE" ]; then
|
|
103
|
+
PID=$(cat "$PID_FILE")
|
|
104
|
+
if kill -0 "$PID" 2>/dev/null; then
|
|
105
|
+
kill "$PID"
|
|
106
|
+
echo "โ
Daemons stopped"
|
|
107
|
+
fi
|
|
108
|
+
rm -f "$PID_FILE"
|
|
109
|
+
fi
|
|
110
|
+
fi
|
|
111
|
+
EOF
|
|
112
|
+
|
|
113
|
+
chmod +x "$HOOKS_DIR/on-project-close"
|
|
114
|
+
|
|
115
|
+
# Create on-clear hook to preserve context
|
|
116
|
+
cat > "$HOOKS_DIR/on-clear" << 'EOF'
|
|
117
|
+
#!/bin/bash
|
|
118
|
+
# Claude hook: Save context before clear
|
|
119
|
+
|
|
120
|
+
# Save to StackMemory
|
|
121
|
+
if command -v stackmemory &> /dev/null; then
|
|
122
|
+
stackmemory context add observation "Claude session cleared - preserving context" 2>/dev/null
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
# Save to ChromaDB if configured
|
|
126
|
+
if [ -f "$HOME/.claude/hooks/chromadb-wrapper" ]; then
|
|
127
|
+
CONTEXT_DATA='{"reason": "clear", "preserved": true}'
|
|
128
|
+
"$HOME/.claude/hooks/chromadb-wrapper" "on-clear" "$CONTEXT_DATA" 2>/dev/null &
|
|
129
|
+
fi
|
|
130
|
+
EOF
|
|
131
|
+
|
|
132
|
+
chmod +x "$HOOKS_DIR/on-clear"
|
|
133
|
+
|
|
134
|
+
# Create wrapper script for easy daemon management
|
|
135
|
+
cat > "$STACKMEMORY_DIR/bin/claude-daemons" << 'EOF'
|
|
136
|
+
#!/bin/bash
|
|
137
|
+
# Claude daemons management script
|
|
138
|
+
|
|
139
|
+
COMMAND="$1"
|
|
140
|
+
PID_FILE="$HOME/.stackmemory/claude-daemons.pid"
|
|
141
|
+
|
|
142
|
+
case "$COMMAND" in
|
|
143
|
+
start)
|
|
144
|
+
if [ -f "$PID_FILE" ]; then
|
|
145
|
+
PID=$(cat "$PID_FILE")
|
|
146
|
+
if kill -0 "$PID" 2>/dev/null; then
|
|
147
|
+
echo "โ
Daemons already running (PID: $PID)"
|
|
148
|
+
exit 0
|
|
149
|
+
fi
|
|
150
|
+
fi
|
|
151
|
+
cd "$(dirname "$(dirname "$(readlink -f "$0")")")"
|
|
152
|
+
nohup node scripts/claude-sm-autostart.js > "$HOME/.stackmemory/logs/autostart.log" 2>&1 &
|
|
153
|
+
echo $! > "$PID_FILE"
|
|
154
|
+
echo "โ
Claude daemons started (PID: $!)"
|
|
155
|
+
;;
|
|
156
|
+
stop)
|
|
157
|
+
if [ -f "$PID_FILE" ]; then
|
|
158
|
+
PID=$(cat "$PID_FILE")
|
|
159
|
+
if kill "$PID" 2>/dev/null; then
|
|
160
|
+
echo "โ
Daemons stopped"
|
|
161
|
+
fi
|
|
162
|
+
rm -f "$PID_FILE"
|
|
163
|
+
else
|
|
164
|
+
echo "โ No daemons running"
|
|
165
|
+
fi
|
|
166
|
+
;;
|
|
167
|
+
status)
|
|
168
|
+
if [ -f "$PID_FILE" ]; then
|
|
169
|
+
PID=$(cat "$PID_FILE")
|
|
170
|
+
if kill -0 "$PID" 2>/dev/null; then
|
|
171
|
+
echo "โ
Daemons running (PID: $PID)"
|
|
172
|
+
echo ""
|
|
173
|
+
echo "Recent activity:"
|
|
174
|
+
tail -5 "$HOME/.stackmemory/logs/claude-autostart.log" 2>/dev/null
|
|
175
|
+
else
|
|
176
|
+
echo "โ Daemons not running (stale PID file)"
|
|
177
|
+
rm -f "$PID_FILE"
|
|
178
|
+
fi
|
|
179
|
+
else
|
|
180
|
+
echo "โ No daemons running"
|
|
181
|
+
fi
|
|
182
|
+
;;
|
|
183
|
+
restart)
|
|
184
|
+
"$0" stop
|
|
185
|
+
sleep 1
|
|
186
|
+
"$0" start
|
|
187
|
+
;;
|
|
188
|
+
logs)
|
|
189
|
+
tail -f "$HOME/.stackmemory/logs/claude-autostart.log"
|
|
190
|
+
;;
|
|
191
|
+
*)
|
|
192
|
+
echo "Usage: claude-daemons {start|stop|status|restart|logs}"
|
|
193
|
+
exit 1
|
|
194
|
+
;;
|
|
195
|
+
esac
|
|
196
|
+
EOF
|
|
197
|
+
|
|
198
|
+
chmod +x "$STACKMEMORY_DIR/bin/claude-daemons"
|
|
199
|
+
|
|
200
|
+
# Update .env with daemon settings
|
|
201
|
+
echo ""
|
|
202
|
+
echo "๐ Updating environment settings..."
|
|
203
|
+
|
|
204
|
+
if [ -f "$PROJECT_DIR/.env" ]; then
|
|
205
|
+
# Check if settings already exist
|
|
206
|
+
if ! grep -q "ENABLE_BACKGROUND_SYNC" "$PROJECT_DIR/.env"; then
|
|
207
|
+
echo "" >> "$PROJECT_DIR/.env"
|
|
208
|
+
echo "# Claude Auto-Start Settings" >> "$PROJECT_DIR/.env"
|
|
209
|
+
echo "ENABLE_BACKGROUND_SYNC=true" >> "$PROJECT_DIR/.env"
|
|
210
|
+
echo "ENABLE_WEBHOOKS=false" >> "$PROJECT_DIR/.env"
|
|
211
|
+
echo "ENABLE_QUALITY_GATES=true" >> "$PROJECT_DIR/.env"
|
|
212
|
+
echo "WEBHOOK_PORT=3456" >> "$PROJECT_DIR/.env"
|
|
213
|
+
fi
|
|
214
|
+
fi
|
|
215
|
+
|
|
216
|
+
# Create test script
|
|
217
|
+
cat > "$PROJECT_DIR/test-claude-autostart.sh" << 'EOF'
|
|
218
|
+
#!/bin/bash
|
|
219
|
+
# Test Claude auto-start integration
|
|
220
|
+
|
|
221
|
+
echo "๐งช Testing Claude Auto-Start Integration"
|
|
222
|
+
echo "========================================"
|
|
223
|
+
echo ""
|
|
224
|
+
|
|
225
|
+
# Test daemon start
|
|
226
|
+
echo "1. Testing daemon startup..."
|
|
227
|
+
node scripts/claude-sm-autostart.js status
|
|
228
|
+
if [ $? -eq 0 ]; then
|
|
229
|
+
echo "โ
Daemon check passed"
|
|
230
|
+
else
|
|
231
|
+
echo "โ Daemon check failed"
|
|
232
|
+
fi
|
|
233
|
+
|
|
234
|
+
echo ""
|
|
235
|
+
echo "2. Testing hooks..."
|
|
236
|
+
for hook in on-project-open on-project-close on-clear; do
|
|
237
|
+
if [ -x "$HOME/.claude/hooks/$hook" ]; then
|
|
238
|
+
echo "โ
$hook hook installed"
|
|
239
|
+
else
|
|
240
|
+
echo "โ $hook hook missing"
|
|
241
|
+
fi
|
|
242
|
+
done
|
|
243
|
+
|
|
244
|
+
echo ""
|
|
245
|
+
echo "3. Testing environment..."
|
|
246
|
+
if [ -f ".env" ] && grep -q "ENABLE_BACKGROUND_SYNC=true" ".env"; then
|
|
247
|
+
echo "โ
Environment configured"
|
|
248
|
+
else
|
|
249
|
+
echo "โ Environment not configured"
|
|
250
|
+
fi
|
|
251
|
+
|
|
252
|
+
echo ""
|
|
253
|
+
echo "4. Testing daemon management..."
|
|
254
|
+
if [ -x "$HOME/.stackmemory/bin/claude-daemons" ]; then
|
|
255
|
+
echo "โ
Management script installed"
|
|
256
|
+
$HOME/.stackmemory/bin/claude-daemons status
|
|
257
|
+
else
|
|
258
|
+
echo "โ Management script missing"
|
|
259
|
+
fi
|
|
260
|
+
|
|
261
|
+
echo ""
|
|
262
|
+
echo "Test complete!"
|
|
263
|
+
EOF
|
|
264
|
+
|
|
265
|
+
chmod +x "$PROJECT_DIR/test-claude-autostart.sh"
|
|
266
|
+
|
|
267
|
+
# Display summary
|
|
268
|
+
echo ""
|
|
269
|
+
echo "โ
Claude Auto-Start Setup Complete!"
|
|
270
|
+
echo ""
|
|
271
|
+
echo "๐ Installed components:"
|
|
272
|
+
echo " โข Claude hooks (on-project-open, on-project-close, on-clear)"
|
|
273
|
+
echo " โข Daemon management script (claude-daemons)"
|
|
274
|
+
echo " โข Environment configuration"
|
|
275
|
+
echo " โข Test script"
|
|
276
|
+
echo ""
|
|
277
|
+
echo "๐ฏ Active daemons when Claude loads:"
|
|
278
|
+
echo " 1. Context Monitor - Saves context every 15 min"
|
|
279
|
+
echo " 2. Linear Sync - Syncs tasks hourly"
|
|
280
|
+
echo " 3. File Watcher - Auto-syncs on file changes"
|
|
281
|
+
echo " 4. Error Monitor - Tracks and logs errors"
|
|
282
|
+
echo " 5. Quality Gates - Post-task validation"
|
|
283
|
+
echo " 6. Auto-handoff - Session transition helper"
|
|
284
|
+
echo ""
|
|
285
|
+
echo "๐ Useful commands:"
|
|
286
|
+
echo " claude-daemons start - Start daemons manually"
|
|
287
|
+
echo " claude-daemons stop - Stop daemons"
|
|
288
|
+
echo " claude-daemons status - Check daemon status"
|
|
289
|
+
echo " claude-daemons logs - View daemon logs"
|
|
290
|
+
echo ""
|
|
291
|
+
echo " ./test-claude-autostart.sh - Test the integration"
|
|
292
|
+
echo ""
|
|
293
|
+
echo "๐ง Configuration:"
|
|
294
|
+
echo " Edit .env to enable/disable features:"
|
|
295
|
+
echo " - ENABLE_BACKGROUND_SYNC (true/false)"
|
|
296
|
+
echo " - ENABLE_WEBHOOKS (true/false)"
|
|
297
|
+
echo " - ENABLE_QUALITY_GATES (true/false)"
|
|
298
|
+
echo ""
|
|
299
|
+
|
|
300
|
+
# Ask to test
|
|
301
|
+
read -p "Would you like to test the integration now? (y/n) " -n 1 -r
|
|
302
|
+
echo
|
|
303
|
+
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
304
|
+
./test-claude-autostart.sh
|
|
305
|
+
fi
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Setup git hooks for StackMemory auto-save
|
|
4
|
+
# This runs StackMemory commands on git operations
|
|
5
|
+
|
|
6
|
+
HOOK_DIR="$(git rev-parse --git-dir 2>/dev/null)/hooks"
|
|
7
|
+
|
|
8
|
+
if [ -z "$HOOK_DIR" ] || [ ! -d "$HOOK_DIR" ]; then
|
|
9
|
+
echo "โ Not in a git repository"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Create pre-commit hook
|
|
14
|
+
cat > "$HOOK_DIR/pre-commit" << 'EOF'
|
|
15
|
+
#!/bin/bash
|
|
16
|
+
# StackMemory pre-commit hook
|
|
17
|
+
|
|
18
|
+
if [ -d ".stackmemory" ]; then
|
|
19
|
+
echo "๐ Saving StackMemory context before commit..."
|
|
20
|
+
stackmemory status 2>/dev/null || true
|
|
21
|
+
fi
|
|
22
|
+
EOF
|
|
23
|
+
|
|
24
|
+
chmod +x "$HOOK_DIR/pre-commit"
|
|
25
|
+
echo "โ
Git hooks installed for StackMemory"
|