@sesamespace/hivemind 0.2.0 → 0.3.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 (72) hide show
  1. package/PLANNING.md +383 -0
  2. package/TASKS.md +60 -0
  3. package/install.sh +187 -0
  4. package/npm-package.json +28 -0
  5. package/package.json +13 -20
  6. package/packages/cli/package.json +23 -0
  7. package/{dist/chunk-DVR2KBL7.js → packages/cli/src/commands/fleet.ts} +50 -30
  8. package/packages/cli/src/commands/init.ts +230 -0
  9. package/{dist/chunk-MBS5A6BZ.js → packages/cli/src/commands/service.ts} +51 -42
  10. package/{dist/chunk-RNK5Q5GR.js → packages/cli/src/commands/start.ts} +12 -14
  11. package/{dist/main.js → packages/cli/src/main.ts} +12 -18
  12. package/packages/cli/tsconfig.json +8 -0
  13. package/packages/memory/Cargo.lock +6480 -0
  14. package/packages/memory/Cargo.toml +21 -0
  15. package/packages/memory/src/context.rs +179 -0
  16. package/packages/memory/src/embeddings.rs +51 -0
  17. package/packages/memory/src/main.rs +626 -0
  18. package/packages/memory/src/promotion.rs +637 -0
  19. package/packages/memory/src/scoring.rs +131 -0
  20. package/packages/memory/src/store.rs +460 -0
  21. package/packages/memory/src/tasks.rs +321 -0
  22. package/packages/runtime/package.json +24 -0
  23. package/packages/runtime/src/__tests__/fleet-integration.test.ts +235 -0
  24. package/packages/runtime/src/__tests__/fleet.test.ts +207 -0
  25. package/packages/runtime/src/__tests__/integration.test.ts +434 -0
  26. package/packages/runtime/src/agent.ts +255 -0
  27. package/packages/runtime/src/config.ts +130 -0
  28. package/packages/runtime/src/context.ts +192 -0
  29. package/packages/runtime/src/fleet/fleet-manager.ts +399 -0
  30. package/packages/runtime/src/fleet/memory-sync.ts +362 -0
  31. package/packages/runtime/src/fleet/primary-client.ts +285 -0
  32. package/packages/runtime/src/fleet/worker-protocol.ts +158 -0
  33. package/packages/runtime/src/fleet/worker-server.ts +246 -0
  34. package/packages/runtime/src/index.ts +57 -0
  35. package/packages/runtime/src/llm-client.ts +65 -0
  36. package/packages/runtime/src/memory-client.ts +309 -0
  37. package/packages/runtime/src/pipeline.ts +151 -0
  38. package/packages/runtime/src/prompt.ts +173 -0
  39. package/packages/runtime/src/sesame.ts +174 -0
  40. package/{dist/start.js → packages/runtime/src/start.ts} +7 -9
  41. package/packages/runtime/src/task-engine.ts +113 -0
  42. package/packages/runtime/src/worker.ts +339 -0
  43. package/packages/runtime/tsconfig.json +8 -0
  44. package/pnpm-workspace.yaml +2 -0
  45. package/run-aidan.sh +23 -0
  46. package/scripts/bootstrap.sh +196 -0
  47. package/scripts/build-npm.sh +94 -0
  48. package/scripts/com.hivemind.agent.plist +44 -0
  49. package/scripts/com.hivemind.memory.plist +31 -0
  50. package/tsconfig.json +22 -0
  51. package/tsup.config.ts +28 -0
  52. package/dist/chunk-2I2O6X5D.js +0 -1408
  53. package/dist/chunk-2I2O6X5D.js.map +0 -1
  54. package/dist/chunk-DVR2KBL7.js.map +0 -1
  55. package/dist/chunk-MBS5A6BZ.js.map +0 -1
  56. package/dist/chunk-NVJ424TB.js +0 -731
  57. package/dist/chunk-NVJ424TB.js.map +0 -1
  58. package/dist/chunk-RNK5Q5GR.js.map +0 -1
  59. package/dist/chunk-XNOWVLXD.js +0 -160
  60. package/dist/chunk-XNOWVLXD.js.map +0 -1
  61. package/dist/commands/fleet.js +0 -9
  62. package/dist/commands/fleet.js.map +0 -1
  63. package/dist/commands/init.js +0 -7
  64. package/dist/commands/init.js.map +0 -1
  65. package/dist/commands/service.js +0 -7
  66. package/dist/commands/service.js.map +0 -1
  67. package/dist/commands/start.js +0 -9
  68. package/dist/commands/start.js.map +0 -1
  69. package/dist/index.js +0 -41
  70. package/dist/index.js.map +0 -1
  71. package/dist/main.js.map +0 -1
  72. package/dist/start.js.map +0 -1
@@ -0,0 +1,196 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Hivemind Agent Bootstrap
5
+ # Usage: curl -sL hivemind.team | bash -s -- <sesame-api-key>
6
+ #
7
+ # This script:
8
+ # 1. Installs system dependencies (Homebrew, Node.js, pnpm, Rust, Ollama)
9
+ # 2. Installs @sesamespace/hivemind from npm
10
+ # 3. Runs hivemind init with your Sesame API key
11
+ # 4. Builds the memory daemon
12
+ # 5. Starts the agent
13
+
14
+ BOLD='\033[1m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[0;33m'
17
+ RED='\033[0;31m'
18
+ NC='\033[0m'
19
+
20
+ info() { echo -e "${GREEN}[✓]${NC} $1"; }
21
+ warn() { echo -e "${YELLOW}[!]${NC} $1"; }
22
+ err() { echo -e "${RED}[✗]${NC} $1"; }
23
+ step() { echo -e "\n${BOLD}→ $1${NC}"; }
24
+
25
+ SESAME_KEY="${1:-}"
26
+
27
+ echo -e "${BOLD}"
28
+ echo " ╦ ╦╦╦ ╦╔═╗╔╦╗╦╔╗╔╔╦╗"
29
+ echo " ╠═╣║╚╗╔╝║╣ ║║║║║║║ ║║"
30
+ echo " ╩ ╩╩ ╚╝ ╚═╝╩ ╩╩╝╚╝═╩╝"
31
+ echo -e "${NC}"
32
+ echo " Agent Bootstrap — hivemind.team"
33
+ echo ""
34
+
35
+ if [ -z "$SESAME_KEY" ]; then
36
+ echo -e "${RED}Error: Sesame API key required${NC}"
37
+ echo ""
38
+ echo "Usage: curl -sL hivemind.team | bash -s -- <sesame-api-key>"
39
+ echo ""
40
+ echo "Get your API key at https://sesame.space"
41
+ exit 1
42
+ fi
43
+
44
+ # --- 1. System dependencies ---
45
+ step "Checking system dependencies"
46
+
47
+ # macOS check
48
+ if [ "$(uname)" != "Darwin" ]; then
49
+ err "This installer currently supports macOS only"
50
+ exit 1
51
+ fi
52
+
53
+ # Homebrew
54
+ if ! command -v brew &>/dev/null; then
55
+ warn "Homebrew not found — installing..."
56
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
57
+ eval "$(/opt/homebrew/bin/brew shellenv)"
58
+ else
59
+ info "Homebrew found"
60
+ fi
61
+
62
+ # Node.js
63
+ if ! command -v node &>/dev/null; then
64
+ warn "Node.js not found — installing..."
65
+ brew install node
66
+ else
67
+ NODE_VER=$(node -v | sed 's/v//' | cut -d. -f1)
68
+ if [ "$NODE_VER" -lt 20 ]; then
69
+ warn "Node.js too old — upgrading..."
70
+ brew upgrade node
71
+ else
72
+ info "Node.js $(node -v)"
73
+ fi
74
+ fi
75
+
76
+ # Rust
77
+ if ! command -v cargo &>/dev/null; then
78
+ warn "Rust not found — installing..."
79
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
80
+ source "$HOME/.cargo/env"
81
+ else
82
+ info "Rust $(rustc --version | awk '{print $2}')"
83
+ fi
84
+
85
+ # Ollama
86
+ if ! command -v ollama &>/dev/null; then
87
+ warn "Ollama not found — installing..."
88
+ brew install ollama
89
+ else
90
+ info "Ollama found"
91
+ fi
92
+
93
+ # --- 2. Install Hivemind ---
94
+ step "Installing Hivemind"
95
+
96
+ npm install -g @sesamespace/hivemind
97
+ info "Hivemind CLI installed"
98
+
99
+ # Verify
100
+ if ! command -v hivemind &>/dev/null; then
101
+ # Try finding it in npm global bin
102
+ NPM_BIN=$(npm config get prefix)/bin
103
+ export PATH="$NPM_BIN:$PATH"
104
+ fi
105
+
106
+ # --- 3. Setup working directory ---
107
+ HIVEMIND_HOME="${HIVEMIND_HOME:-$HOME/hivemind}"
108
+ step "Setting up agent at $HIVEMIND_HOME"
109
+
110
+ mkdir -p "$HIVEMIND_HOME"
111
+ cd "$HIVEMIND_HOME"
112
+
113
+ # Copy config from installed package
114
+ PKG_DIR=$(npm root -g)/@sesamespace/hivemind
115
+ if [ -d "$PKG_DIR/config" ]; then
116
+ cp -n "$PKG_DIR/config/default.toml" config/default.toml 2>/dev/null || true
117
+ cp -n "$PKG_DIR/config/TEAM-CHARTER.md" config/TEAM-CHARTER.md 2>/dev/null || true
118
+ fi
119
+
120
+ # --- 4. Initialize from Sesame ---
121
+ step "Initializing from Sesame"
122
+
123
+ hivemind init "$SESAME_KEY"
124
+
125
+ # --- 5. Build memory daemon ---
126
+ step "Building memory daemon"
127
+
128
+ if [ -d "$PKG_DIR/packages/memory" ]; then
129
+ cp -r "$PKG_DIR/packages/memory" "$HIVEMIND_HOME/packages/memory"
130
+ cd "$HIVEMIND_HOME/packages/memory"
131
+ cargo build --release 2>&1 | tail -3
132
+ cd "$HIVEMIND_HOME"
133
+ info "Memory daemon built"
134
+ else
135
+ warn "Memory daemon source not found — skipping build"
136
+ fi
137
+
138
+ # --- 6. Pull embedding model ---
139
+ step "Setting up Ollama"
140
+
141
+ if ! curl -s http://localhost:11434/api/tags &>/dev/null; then
142
+ warn "Starting Ollama..."
143
+ ollama serve &>/dev/null &
144
+ sleep 3
145
+ fi
146
+
147
+ if ollama list 2>/dev/null | grep -q "nomic-embed-text"; then
148
+ info "nomic-embed-text ready"
149
+ else
150
+ warn "Pulling embedding model..."
151
+ ollama pull nomic-embed-text
152
+ info "nomic-embed-text ready"
153
+ fi
154
+
155
+ # --- 7. Create start script ---
156
+ step "Creating launch script"
157
+
158
+ cat > "$HIVEMIND_HOME/start.sh" <<'LAUNCH'
159
+ #!/usr/bin/env bash
160
+ set -euo pipefail
161
+ cd "$(dirname "$0")"
162
+
163
+ # Load env
164
+ if [ -f .env ]; then set -a; source .env; set +a; fi
165
+
166
+ # Start memory daemon if not running
167
+ if ! curl -s http://localhost:3434/health &>/dev/null; then
168
+ echo "[hivemind] Starting memory daemon..."
169
+ nohup ./packages/memory/target/release/hivemind-memory > /tmp/hivemind-memory.log 2>&1 &
170
+ sleep 2
171
+ fi
172
+
173
+ # Start Ollama if not running
174
+ if ! curl -s http://localhost:11434/api/tags &>/dev/null; then
175
+ ollama serve &>/dev/null &
176
+ sleep 3
177
+ fi
178
+
179
+ # Start agent (auto-restart)
180
+ echo "[hivemind] Starting agent..."
181
+ while true; do
182
+ hivemind start --config config/default.toml
183
+ echo "[hivemind] Agent exited — restarting in 5s..."
184
+ sleep 5
185
+ done
186
+ LAUNCH
187
+
188
+ chmod +x "$HIVEMIND_HOME/start.sh"
189
+
190
+ # --- Done ---
191
+ echo ""
192
+ echo -e "${GREEN}${BOLD} ✓ Hivemind agent installed at $HIVEMIND_HOME${NC}"
193
+ echo ""
194
+ echo " To start: cd $HIVEMIND_HOME && ./start.sh"
195
+ echo " Background: cd $HIVEMIND_HOME && nohup ./start.sh > /tmp/hivemind.log 2>&1 &"
196
+ echo ""
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Build a flat npm-publishable package from the monorepo
5
+ # Output: dist/npm/
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
8
+ ROOT="$(dirname "$SCRIPT_DIR")"
9
+ OUT="$ROOT/dist/npm"
10
+
11
+ echo "→ Building npm package..."
12
+
13
+ # Clean
14
+ rm -rf "$OUT"
15
+ mkdir -p "$OUT/dist" "$OUT/config" "$OUT/packages/memory/src"
16
+
17
+ # Build TypeScript
18
+ cd "$ROOT"
19
+ pnpm build
20
+
21
+ # Copy compiled JS (flatten cli + runtime into one dist/)
22
+ cp -r packages/runtime/dist/* "$OUT/dist/"
23
+ cp -r packages/cli/dist/* "$OUT/dist/"
24
+
25
+ # Copy config files
26
+ cp config/default.toml "$OUT/config/"
27
+ cp config/TEAM-CHARTER.md "$OUT/config/"
28
+
29
+ # Copy Rust memory daemon source
30
+ cp -r packages/memory/src "$OUT/packages/memory/src"
31
+ cp packages/memory/Cargo.toml "$OUT/packages/memory/"
32
+ cp packages/memory/Cargo.lock "$OUT/packages/memory/" 2>/dev/null || true
33
+
34
+ # Copy install script
35
+ cp "$ROOT/install.sh" "$OUT/"
36
+ chmod +x "$OUT/install.sh"
37
+
38
+ # Copy README
39
+ cp "$ROOT/README.md" "$OUT/"
40
+
41
+ # Write package.json for npm
42
+ cat > "$OUT/package.json" <<'EOF'
43
+ {
44
+ "name": "@sesamespace/hivemind",
45
+ "version": "0.1.0",
46
+ "description": "Cognitive architecture for AI agents with multi-layered memory",
47
+ "type": "module",
48
+ "bin": {
49
+ "hivemind": "dist/main.js"
50
+ },
51
+ "files": [
52
+ "dist/",
53
+ "config/",
54
+ "packages/memory/",
55
+ "install.sh",
56
+ "README.md"
57
+ ],
58
+ "engines": {
59
+ "node": ">=20.0.0"
60
+ },
61
+ "dependencies": {
62
+ "@iarna/toml": "^2.2.5",
63
+ "@sesamespace/sdk": "^0.1.6",
64
+ "ws": "^8.18.0"
65
+ },
66
+ "keywords": [
67
+ "hivemind",
68
+ "ai-agent",
69
+ "memory",
70
+ "sesame",
71
+ "cognitive-architecture"
72
+ ],
73
+ "license": "UNLICENSED",
74
+ "repository": {
75
+ "type": "git",
76
+ "url": "https://github.com/baileydavis2026/hivemind"
77
+ }
78
+ }
79
+ EOF
80
+
81
+ # Add shebang to CLI entry
82
+ MAIN="$OUT/dist/main.js"
83
+ if ! head -1 "$MAIN" | grep -q "#!/"; then
84
+ echo '#!/usr/bin/env node' | cat - "$MAIN" > "$MAIN.tmp" && mv "$MAIN.tmp" "$MAIN"
85
+ fi
86
+ chmod +x "$MAIN"
87
+
88
+ echo "✓ Package built at: $OUT"
89
+ echo ""
90
+ echo "To publish:"
91
+ echo " cd $OUT && npm publish --access public"
92
+ echo ""
93
+ echo "To test locally:"
94
+ echo " npm install -g $OUT"
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>Label</key>
6
+ <string>com.hivemind.agent</string>
7
+
8
+ <key>ProgramArguments</key>
9
+ <array>
10
+ <string>/bin/bash</string>
11
+ <string>-c</string>
12
+ <string>cd __HIVEMIND_HOME__ &amp;&amp; set -a &amp;&amp; source .env 2>/dev/null &amp;&amp; set +a &amp;&amp; exec /opt/homebrew/bin/node packages/cli/dist/main.js start --config config/default.toml</string>
13
+ </array>
14
+
15
+ <key>EnvironmentVariables</key>
16
+ <dict>
17
+ <key>HIVEMIND_HOME</key>
18
+ <string>__HIVEMIND_HOME__</string>
19
+ <key>PATH</key>
20
+ <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
21
+ </dict>
22
+
23
+ <key>WorkingDirectory</key>
24
+ <string>__HIVEMIND_HOME__</string>
25
+
26
+ <key>RunAtLoad</key>
27
+ <true/>
28
+
29
+ <key>KeepAlive</key>
30
+ <dict>
31
+ <key>SuccessfulExit</key>
32
+ <false/>
33
+ </dict>
34
+
35
+ <key>ThrottleInterval</key>
36
+ <integer>5</integer>
37
+
38
+ <key>StandardOutPath</key>
39
+ <string>/tmp/hivemind-agent.log</string>
40
+
41
+ <key>StandardErrorPath</key>
42
+ <string>/tmp/hivemind-agent.log</string>
43
+ </dict>
44
+ </plist>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>Label</key>
6
+ <string>com.hivemind.memory</string>
7
+
8
+ <key>ProgramArguments</key>
9
+ <array>
10
+ <string>__HIVEMIND_HOME__/packages/memory/target/release/hivemind-memory</string>
11
+ </array>
12
+
13
+ <key>WorkingDirectory</key>
14
+ <string>__HIVEMIND_HOME__</string>
15
+
16
+ <key>RunAtLoad</key>
17
+ <true/>
18
+
19
+ <key>KeepAlive</key>
20
+ <true/>
21
+
22
+ <key>ThrottleInterval</key>
23
+ <integer>5</integer>
24
+
25
+ <key>StandardOutPath</key>
26
+ <string>/tmp/hivemind-memory.log</string>
27
+
28
+ <key>StandardErrorPath</key>
29
+ <string>/tmp/hivemind-memory.log</string>
30
+ </dict>
31
+ </plist>
package/tsconfig.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ES2022",
5
+ "moduleResolution": "bundler",
6
+ "strict": true,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "resolveJsonModule": true,
11
+ "declaration": true,
12
+ "declarationMap": true,
13
+ "sourceMap": true,
14
+ "outDir": "dist",
15
+ "rootDir": "src",
16
+ "paths": {
17
+ "@hivemind/runtime": ["./packages/runtime/src/index.ts"],
18
+ "@hivemind/runtime/*": ["./packages/runtime/src/*"]
19
+ }
20
+ },
21
+ "exclude": ["node_modules", "dist"]
22
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,28 @@
1
+ import { defineConfig } from "tsup";
2
+
3
+ export default defineConfig({
4
+ entry: {
5
+ "main": "packages/cli/src/main.ts",
6
+ "commands/init": "packages/cli/src/commands/init.ts",
7
+ "commands/start": "packages/cli/src/commands/start.ts",
8
+ "commands/fleet": "packages/cli/src/commands/fleet.ts",
9
+ "commands/service": "packages/cli/src/commands/service.ts",
10
+ "index": "packages/runtime/src/index.ts",
11
+ "start": "packages/runtime/src/start.ts",
12
+ },
13
+ format: ["esm"],
14
+ target: "node20",
15
+ platform: "node",
16
+ splitting: true,
17
+ sourcemap: true,
18
+ dts: false,
19
+ clean: true,
20
+ outDir: "dist",
21
+ outExtension: () => ({ js: ".js" }),
22
+ external: [
23
+ "@iarna/toml",
24
+ "@sesamespace/sdk",
25
+ "ws",
26
+ ],
27
+ noExternal: ["@hivemind/runtime"],
28
+ });