htm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. checksums.yaml +7 -0
  2. data/.architecture/decisions/adrs/001-use-postgresql-timescaledb-storage.md +227 -0
  3. data/.architecture/decisions/adrs/002-two-tier-memory-architecture.md +322 -0
  4. data/.architecture/decisions/adrs/003-ollama-default-embedding-provider.md +339 -0
  5. data/.architecture/decisions/adrs/004-multi-robot-shared-memory-hive-mind.md +374 -0
  6. data/.architecture/decisions/adrs/005-rag-based-retrieval-with-hybrid-search.md +443 -0
  7. data/.architecture/decisions/adrs/006-context-assembly-strategies.md +444 -0
  8. data/.architecture/decisions/adrs/007-working-memory-eviction-strategy.md +461 -0
  9. data/.architecture/decisions/adrs/008-robot-identification-system.md +550 -0
  10. data/.architecture/decisions/adrs/009-never-forget-explicit-deletion-only.md +570 -0
  11. data/.architecture/decisions/adrs/010-redis-working-memory-rejected.md +323 -0
  12. data/.architecture/decisions/adrs/011-database-side-embedding-generation-with-pgai.md +585 -0
  13. data/.architecture/decisions/adrs/012-llm-driven-ontology-topic-extraction.md +583 -0
  14. data/.architecture/decisions/adrs/013-activerecord-orm-and-many-to-many-tagging.md +299 -0
  15. data/.architecture/decisions/adrs/014-client-side-embedding-generation-workflow.md +569 -0
  16. data/.architecture/decisions/adrs/015-hierarchical-tag-ontology-and-llm-extraction.md +701 -0
  17. data/.architecture/decisions/adrs/016-async-embedding-and-tag-generation.md +694 -0
  18. data/.architecture/members.yml +144 -0
  19. data/.architecture/reviews/2025-10-29-llm-configuration-and-async-processing-review.md +1137 -0
  20. data/.architecture/reviews/initial-system-analysis.md +330 -0
  21. data/.envrc +32 -0
  22. data/.irbrc +145 -0
  23. data/CHANGELOG.md +150 -0
  24. data/COMMITS.md +196 -0
  25. data/LICENSE +21 -0
  26. data/README.md +1347 -0
  27. data/Rakefile +51 -0
  28. data/SETUP.md +268 -0
  29. data/config/database.yml +67 -0
  30. data/db/migrate/20250101000001_enable_extensions.rb +14 -0
  31. data/db/migrate/20250101000002_create_robots.rb +14 -0
  32. data/db/migrate/20250101000003_create_nodes.rb +42 -0
  33. data/db/migrate/20250101000005_create_tags.rb +38 -0
  34. data/db/migrate/20250101000007_add_node_vector_indexes.rb +30 -0
  35. data/db/schema.sql +473 -0
  36. data/db/seed_data/README.md +100 -0
  37. data/db/seed_data/presidents.md +136 -0
  38. data/db/seed_data/states.md +151 -0
  39. data/db/seeds.rb +208 -0
  40. data/dbdoc/README.md +173 -0
  41. data/dbdoc/public.node_stats.md +48 -0
  42. data/dbdoc/public.node_stats.svg +41 -0
  43. data/dbdoc/public.node_tags.md +40 -0
  44. data/dbdoc/public.node_tags.svg +112 -0
  45. data/dbdoc/public.nodes.md +54 -0
  46. data/dbdoc/public.nodes.svg +118 -0
  47. data/dbdoc/public.nodes_tags.md +39 -0
  48. data/dbdoc/public.nodes_tags.svg +112 -0
  49. data/dbdoc/public.ontology_structure.md +48 -0
  50. data/dbdoc/public.ontology_structure.svg +38 -0
  51. data/dbdoc/public.operations_log.md +42 -0
  52. data/dbdoc/public.operations_log.svg +130 -0
  53. data/dbdoc/public.relationships.md +39 -0
  54. data/dbdoc/public.relationships.svg +41 -0
  55. data/dbdoc/public.robot_activity.md +46 -0
  56. data/dbdoc/public.robot_activity.svg +35 -0
  57. data/dbdoc/public.robots.md +35 -0
  58. data/dbdoc/public.robots.svg +90 -0
  59. data/dbdoc/public.schema_migrations.md +29 -0
  60. data/dbdoc/public.schema_migrations.svg +26 -0
  61. data/dbdoc/public.tags.md +35 -0
  62. data/dbdoc/public.tags.svg +60 -0
  63. data/dbdoc/public.topic_relationships.md +45 -0
  64. data/dbdoc/public.topic_relationships.svg +32 -0
  65. data/dbdoc/schema.json +1437 -0
  66. data/dbdoc/schema.svg +154 -0
  67. data/docs/api/database.md +806 -0
  68. data/docs/api/embedding-service.md +532 -0
  69. data/docs/api/htm.md +797 -0
  70. data/docs/api/index.md +259 -0
  71. data/docs/api/long-term-memory.md +1096 -0
  72. data/docs/api/working-memory.md +665 -0
  73. data/docs/architecture/adrs/001-postgresql-timescaledb.md +314 -0
  74. data/docs/architecture/adrs/002-two-tier-memory.md +411 -0
  75. data/docs/architecture/adrs/003-ollama-embeddings.md +421 -0
  76. data/docs/architecture/adrs/004-hive-mind.md +437 -0
  77. data/docs/architecture/adrs/005-rag-retrieval.md +531 -0
  78. data/docs/architecture/adrs/006-context-assembly.md +496 -0
  79. data/docs/architecture/adrs/007-eviction-strategy.md +645 -0
  80. data/docs/architecture/adrs/008-robot-identification.md +625 -0
  81. data/docs/architecture/adrs/009-never-forget.md +648 -0
  82. data/docs/architecture/adrs/010-redis-working-memory-rejected.md +323 -0
  83. data/docs/architecture/adrs/011-pgai-integration.md +494 -0
  84. data/docs/architecture/adrs/index.md +215 -0
  85. data/docs/architecture/hive-mind.md +736 -0
  86. data/docs/architecture/index.md +351 -0
  87. data/docs/architecture/overview.md +538 -0
  88. data/docs/architecture/two-tier-memory.md +873 -0
  89. data/docs/assets/css/custom.css +83 -0
  90. data/docs/assets/images/htm-core-components.svg +63 -0
  91. data/docs/assets/images/htm-database-schema.svg +93 -0
  92. data/docs/assets/images/htm-hive-mind-architecture.svg +125 -0
  93. data/docs/assets/images/htm-importance-scoring-framework.svg +83 -0
  94. data/docs/assets/images/htm-layered-architecture.svg +71 -0
  95. data/docs/assets/images/htm-long-term-memory-architecture.svg +115 -0
  96. data/docs/assets/images/htm-working-memory-architecture.svg +120 -0
  97. data/docs/assets/images/htm.jpg +0 -0
  98. data/docs/assets/images/htm_demo.gif +0 -0
  99. data/docs/assets/js/mathjax.js +18 -0
  100. data/docs/assets/videos/htm_video.mp4 +0 -0
  101. data/docs/database_rake_tasks.md +322 -0
  102. data/docs/development/contributing.md +787 -0
  103. data/docs/development/index.md +336 -0
  104. data/docs/development/schema.md +596 -0
  105. data/docs/development/setup.md +719 -0
  106. data/docs/development/testing.md +819 -0
  107. data/docs/guides/adding-memories.md +824 -0
  108. data/docs/guides/context-assembly.md +1009 -0
  109. data/docs/guides/getting-started.md +577 -0
  110. data/docs/guides/index.md +118 -0
  111. data/docs/guides/long-term-memory.md +941 -0
  112. data/docs/guides/multi-robot.md +866 -0
  113. data/docs/guides/recalling-memories.md +927 -0
  114. data/docs/guides/search-strategies.md +953 -0
  115. data/docs/guides/working-memory.md +717 -0
  116. data/docs/index.md +214 -0
  117. data/docs/installation.md +477 -0
  118. data/docs/multi_framework_support.md +519 -0
  119. data/docs/quick-start.md +655 -0
  120. data/docs/setup_local_database.md +302 -0
  121. data/docs/using_rake_tasks_in_your_app.md +383 -0
  122. data/examples/basic_usage.rb +93 -0
  123. data/examples/cli_app/README.md +317 -0
  124. data/examples/cli_app/htm_cli.rb +270 -0
  125. data/examples/custom_llm_configuration.rb +183 -0
  126. data/examples/example_app/Rakefile +71 -0
  127. data/examples/example_app/app.rb +206 -0
  128. data/examples/sinatra_app/Gemfile +21 -0
  129. data/examples/sinatra_app/app.rb +335 -0
  130. data/lib/htm/active_record_config.rb +113 -0
  131. data/lib/htm/configuration.rb +342 -0
  132. data/lib/htm/database.rb +594 -0
  133. data/lib/htm/embedding_service.rb +115 -0
  134. data/lib/htm/errors.rb +34 -0
  135. data/lib/htm/job_adapter.rb +154 -0
  136. data/lib/htm/jobs/generate_embedding_job.rb +65 -0
  137. data/lib/htm/jobs/generate_tags_job.rb +82 -0
  138. data/lib/htm/long_term_memory.rb +965 -0
  139. data/lib/htm/models/node.rb +109 -0
  140. data/lib/htm/models/node_tag.rb +33 -0
  141. data/lib/htm/models/robot.rb +52 -0
  142. data/lib/htm/models/tag.rb +76 -0
  143. data/lib/htm/railtie.rb +76 -0
  144. data/lib/htm/sinatra.rb +157 -0
  145. data/lib/htm/tag_service.rb +135 -0
  146. data/lib/htm/tasks.rb +38 -0
  147. data/lib/htm/version.rb +5 -0
  148. data/lib/htm/working_memory.rb +182 -0
  149. data/lib/htm.rb +400 -0
  150. data/lib/tasks/db.rake +19 -0
  151. data/lib/tasks/htm.rake +147 -0
  152. data/lib/tasks/jobs.rake +312 -0
  153. data/mkdocs.yml +190 -0
  154. data/scripts/install_local_database.sh +309 -0
  155. metadata +341 -0
@@ -0,0 +1,309 @@
1
+ #!/usr/bin/env bash
2
+ # HTM Local Database Setup Script
3
+ #
4
+ # This script performs a complete, automated installation of PostgreSQL 17
5
+ # with all required extensions for the HTM (Hierarchical Temporal Memory) library:
6
+ # - PostgreSQL 17 (from Homebrew)
7
+ # - pgvector - vector similarity search for embeddings
8
+ # - pg_trgm - trigram matching for fuzzy text search
9
+ #
10
+ # This is the only script you need to run to get a fully functional
11
+ # local database environment for HTM development.
12
+ #
13
+ # Requirements:
14
+ # - macOS with Homebrew installed
15
+ #
16
+ # Usage:
17
+ # bash scripts/install_local_database.sh
18
+
19
+ set -e # Exit on error
20
+
21
+ echo "=========================================="
22
+ echo "HTM Local Database Setup"
23
+ echo "=========================================="
24
+ echo
25
+
26
+ # Check for existing PostgreSQL
27
+ if brew list postgresql@17 &>/dev/null || brew list postgresql@16 &>/dev/null; then
28
+ echo "⚠️ Found existing PostgreSQL installation"
29
+ echo
30
+ echo "This script will:"
31
+ echo " 1. Stop current PostgreSQL services"
32
+ echo " 2. Backup your database"
33
+ echo " 3. Uninstall current PostgreSQL"
34
+ echo " 4. Install PostgreSQL 17"
35
+ echo " 5. Install all required extensions (pgvector, pg_trgm)"
36
+ echo " 6. Restore your data"
37
+ echo " 7. Start PostgreSQL with all extensions enabled"
38
+ echo
39
+ read -p "Continue? (y/n) " -n 1 -r
40
+ echo
41
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
42
+ exit 1
43
+ fi
44
+ fi
45
+
46
+ # Step 1: Stop ALL PostgreSQL processes
47
+ echo
48
+ echo "Step 1: Stopping PostgreSQL services..."
49
+ brew services stop postgresql@17 2>/dev/null || true
50
+ brew services stop postgresql@16 2>/dev/null || true
51
+
52
+ # Force kill any remaining postgres processes
53
+ pkill -9 postgres 2>/dev/null || true
54
+ sleep 2
55
+
56
+ # Check if any processes remain
57
+ if pgrep -q postgres; then
58
+ echo "⚠️ Warning: Some PostgreSQL processes are still running"
59
+ pkill -KILL postgres 2>/dev/null || true
60
+ sleep 2
61
+ fi
62
+
63
+ echo "✓ Services stopped"
64
+
65
+ # Step 2: Backup database
66
+ BACKUP_DIR="$HOME/postgresql_backup_$(date +%Y%m%d_%H%M%S)"
67
+ echo
68
+ echo "Step 2: Backing up database to $BACKUP_DIR..."
69
+
70
+ if [ -d "/opt/homebrew/var/postgresql@17" ]; then
71
+ mkdir -p "$BACKUP_DIR"
72
+
73
+ # Try to export database if possible
74
+ CURRENT_USER=$(whoami)
75
+ if command -v pg_dump &>/dev/null && psql -U $CURRENT_USER -lqt 2>/dev/null | grep -qw htm_development; then
76
+ echo "Exporting htm_development database..."
77
+ pg_dump -U $CURRENT_USER htm_development > "$BACKUP_DIR/htm_development.sql" 2>/dev/null || echo "Could not export database (server may be stopped)"
78
+ fi
79
+
80
+ # Copy data directory
81
+ if [ -d "/opt/homebrew/var/postgresql@17" ]; then
82
+ cp -r /opt/homebrew/var/postgresql@17 "$BACKUP_DIR/data" 2>/dev/null || true
83
+ echo "✓ Data directory backed up"
84
+ fi
85
+ else
86
+ echo "No existing database found, skipping backup"
87
+ fi
88
+
89
+ # Step 3: Uninstall current PostgreSQL
90
+ echo
91
+ echo "Step 3: Uninstalling current PostgreSQL..."
92
+ brew uninstall --force postgresql@17 2>/dev/null || true
93
+ brew uninstall --force postgresql@16 2>/dev/null || true
94
+
95
+ # Clean up old data directory to start fresh
96
+ if [ -d "/opt/homebrew/var/postgresql@17" ]; then
97
+ echo "Removing old data directory..."
98
+ rm -rf /opt/homebrew/var/postgresql@17
99
+ fi
100
+
101
+ echo "✓ Uninstalled"
102
+
103
+ # Step 4: Install PostgreSQL
104
+ echo
105
+ echo "Step 4: Installing PostgreSQL 17..."
106
+
107
+ # Install standard PostgreSQL 17
108
+ echo "Installing postgresql@17..."
109
+ brew install postgresql@17
110
+
111
+ echo "✓ PostgreSQL installed"
112
+
113
+ # Step 5: Initialize and configure PostgreSQL
114
+ echo
115
+ echo "Step 5: Initializing PostgreSQL..."
116
+
117
+ # Set paths
118
+ PG_BIN=/opt/homebrew/opt/postgresql@17/bin
119
+ PG_DATA=/opt/homebrew/var/postgresql@17
120
+
121
+ # Ensure data directory is completely clean before initialization
122
+ if [ -d "$PG_DATA" ]; then
123
+ echo "Removing existing data directory to start fresh..."
124
+ rm -rf "$PG_DATA"
125
+ fi
126
+
127
+ # Initialize database cluster (initdb will create the directory)
128
+ echo "Initializing database cluster..."
129
+ $PG_BIN/initdb -D "$PG_DATA" --username=$(whoami) --auth=trust
130
+
131
+ # Configure postgresql.conf for better performance (macOS compatible)
132
+ echo "Configuring PostgreSQL..."
133
+ cat >> "$PG_DATA/postgresql.conf" <<EOF
134
+
135
+ # HTM Optimizations (macOS compatible)
136
+ max_connections = 100
137
+ shared_buffers = 256MB
138
+ effective_cache_size = 1GB
139
+ maintenance_work_mem = 64MB
140
+ checkpoint_completion_target = 0.9
141
+ wal_buffers = 16MB
142
+ default_statistics_target = 100
143
+ random_page_cost = 1.1
144
+ # Note: effective_io_concurrency not supported on macOS
145
+ # Note: shared_preload_libraries configured later
146
+ EOF
147
+
148
+ # Start PostgreSQL
149
+ echo "Starting PostgreSQL..."
150
+ $PG_BIN/pg_ctl -D "$PG_DATA" -l "$PG_DATA/server.log" start
151
+
152
+ # Wait for server to be ready
153
+ echo "Waiting for PostgreSQL to start..."
154
+ for i in {1..30}; do
155
+ if $PG_BIN/pg_isready -q; then
156
+ break
157
+ fi
158
+ sleep 1
159
+ done
160
+
161
+ if ! $PG_BIN/pg_isready -q; then
162
+ echo "✗ PostgreSQL failed to start"
163
+ echo "Check log: $PG_DATA/server.log"
164
+ cat "$PG_DATA/server.log"
165
+ exit 1
166
+ fi
167
+
168
+ # Give PostgreSQL a moment to fully initialize
169
+ sleep 2
170
+
171
+ echo "✓ PostgreSQL started"
172
+
173
+ # Step 6: Create databases
174
+ echo
175
+ echo "Step 6: Setting up databases..."
176
+
177
+ # Get current username
178
+ PGUSER=$(whoami)
179
+
180
+ # Create default database for user
181
+ echo "Creating database for user $PGUSER..."
182
+ $PG_BIN/createdb -U $PGUSER $PGUSER 2>/dev/null && echo "✓ Created $PGUSER database" || {
183
+ # Check if it already exists
184
+ if $PG_BIN/psql -U $PGUSER -lqt | cut -d \| -f 1 | grep -qw $PGUSER; then
185
+ echo "✓ User database already exists"
186
+ else
187
+ echo "✗ Failed to create user database and it doesn't exist"
188
+ echo "Checking PostgreSQL connection..."
189
+ $PG_BIN/psql -U $PGUSER postgres -c "SELECT version();" 2>&1 || true
190
+ exit 1
191
+ fi
192
+ }
193
+
194
+ # Create htm_development database
195
+ echo "Creating htm_development database..."
196
+ $PG_BIN/createdb -U $PGUSER htm_development 2>/dev/null && echo "✓ Created htm_development database" || {
197
+ # Check if it already exists
198
+ if $PG_BIN/psql -U $PGUSER -lqt | cut -d \| -f 1 | grep -qw htm_development; then
199
+ echo "✓ htm_development already exists"
200
+ else
201
+ echo "✗ Failed to create htm_development database and it doesn't exist"
202
+ echo "Checking connection..."
203
+ $PG_BIN/psql -U $PGUSER -l 2>&1 | head -20
204
+ exit 1
205
+ fi
206
+ }
207
+
208
+ # Restore from backup if it exists
209
+ if [ -f "$BACKUP_DIR/htm_development.sql" ]; then
210
+ echo "Restoring from backup..."
211
+ $PG_BIN/psql -U $PGUSER htm_development < "$BACKUP_DIR/htm_development.sql" || echo "Could not restore backup (this is OK for fresh install)"
212
+ fi
213
+
214
+ echo "✓ Databases created"
215
+
216
+ # Step 7: Install extension dependencies
217
+ echo
218
+ echo "Step 7: Installing extension dependencies..."
219
+
220
+ # Install pgvector
221
+ if ! brew list pgvector &>/dev/null; then
222
+ echo "Installing pgvector..."
223
+ brew install pgvector
224
+ else
225
+ echo "✓ pgvector already installed"
226
+ fi
227
+
228
+ echo "✓ Extension dependencies installed"
229
+
230
+ # Step 8: Create symlinks for extension files
231
+ echo
232
+ echo "Step 8: Creating extension file symlinks..."
233
+
234
+ # PostgreSQL from petere tap looks for extensions in its Cellar directory
235
+ # but Homebrew installs them in the shared location
236
+ PG_CELLAR_EXT=/opt/homebrew/Cellar/postgresql@17/17.6/share/extension
237
+ PG_CELLAR_LIB=/opt/homebrew/Cellar/postgresql@17/17.6/lib
238
+ PG_SHARED_EXT=/opt/homebrew/share/postgresql@17/extension
239
+ PG_SHARED_LIB=/opt/homebrew/lib/postgresql@17
240
+
241
+ # Create extension directory in Cellar if it doesn't exist
242
+ mkdir -p "$PG_CELLAR_EXT"
243
+ mkdir -p "$PG_CELLAR_LIB"
244
+
245
+ # Symlink pgvector files
246
+ if [ -f "$PG_SHARED_EXT/vector.control" ]; then
247
+ echo "Symlinking pgvector extension files..."
248
+ cd "$PG_CELLAR_EXT"
249
+ ln -sf "$PG_SHARED_EXT"/vector* .
250
+ cd "$PG_CELLAR_LIB"
251
+ ln -sf "$PG_SHARED_LIB"/vector.dylib .
252
+ echo "✓ pgvector symlinks created"
253
+ fi
254
+
255
+ echo "✓ Extension symlinks created"
256
+
257
+ # Step 9: Enable core extensions in database
258
+ echo
259
+ echo "Step 9: Enabling core extensions..."
260
+
261
+ # Enable extensions in database
262
+ echo "Enabling extensions in htm_development..."
263
+ $PG_BIN/psql -U $(whoami) htm_development -c "CREATE EXTENSION IF NOT EXISTS vector;" || {
264
+ echo "✗ Failed to enable pgvector extension"
265
+ echo "Check that symlinks were created correctly"
266
+ exit 1
267
+ }
268
+ $PG_BIN/psql -U $(whoami) htm_development -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
269
+
270
+ echo "✓ Core extensions enabled"
271
+
272
+ # Step 10: Verify installation
273
+ echo
274
+ echo "Step 10: Verifying installation..."
275
+ echo
276
+
277
+ # Check all extensions
278
+ echo "Installed extensions:"
279
+ $PG_BIN/psql -U $(whoami) htm_development -c "\dx"
280
+
281
+ echo
282
+ echo "=========================================="
283
+ echo "✓ Setup Complete!"
284
+ echo "=========================================="
285
+ echo
286
+ echo "PostgreSQL is running with required extensions:"
287
+ echo " ✓ pgvector (for embeddings)"
288
+ echo " ✓ pg_trgm (for fuzzy search)"
289
+ echo
290
+ echo "Embeddings are generated client-side using Ollama."
291
+ echo "Make sure Ollama is installed and running:"
292
+ echo " curl https://ollama.ai/install.sh | sh"
293
+ echo " ollama pull nomic-embed-text"
294
+ echo
295
+ echo "Database: htm_development"
296
+ echo "Location: $PG_DATA"
297
+ echo "Log: $PG_DATA/server.log"
298
+ echo "Backup: $BACKUP_DIR"
299
+ echo
300
+ echo "PostgreSQL commands:"
301
+ echo " Start: $PG_BIN/pg_ctl -D $PG_DATA -l $PG_DATA/server.log start"
302
+ echo " Stop: $PG_BIN/pg_ctl -D $PG_DATA stop"
303
+ echo " Status: $PG_BIN/pg_ctl -D $PG_DATA status"
304
+ echo
305
+ echo "Next steps:"
306
+ echo " 1. cd /Users/dewayne/sandbox/git_repos/madbomber/htm"
307
+ echo " 2. bundle exec rake htm:db:setup"
308
+ echo " 3. bundle exec rake htm:db:seed"
309
+ echo
metadata ADDED
@@ -0,0 +1,341 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: htm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dewayne VanHoozer
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: pg
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 1.5.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.5.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: neighbor
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: activerecord
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: tiktoken_ruby
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: ruby_llm
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: lru_redux
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rake
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: minitest
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: minitest-reporters
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: debug_me
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ description: |
153
+ HTM (Hierarchical Temporary Memory) provides intelligent memory management for
154
+ LLM-based applications. It implements a two-tier memory system with
155
+ durable long-term storage (PostgreSQL/TimescaleDB) and token-limited working
156
+ memory, enabling applications to recall context from past conversations using RAG
157
+ (Retrieval-Augmented Generation) techniques.
158
+ email:
159
+ - dvanhoozer@gmail.com
160
+ executables: []
161
+ extensions: []
162
+ extra_rdoc_files: []
163
+ files:
164
+ - ".architecture/decisions/adrs/001-use-postgresql-timescaledb-storage.md"
165
+ - ".architecture/decisions/adrs/002-two-tier-memory-architecture.md"
166
+ - ".architecture/decisions/adrs/003-ollama-default-embedding-provider.md"
167
+ - ".architecture/decisions/adrs/004-multi-robot-shared-memory-hive-mind.md"
168
+ - ".architecture/decisions/adrs/005-rag-based-retrieval-with-hybrid-search.md"
169
+ - ".architecture/decisions/adrs/006-context-assembly-strategies.md"
170
+ - ".architecture/decisions/adrs/007-working-memory-eviction-strategy.md"
171
+ - ".architecture/decisions/adrs/008-robot-identification-system.md"
172
+ - ".architecture/decisions/adrs/009-never-forget-explicit-deletion-only.md"
173
+ - ".architecture/decisions/adrs/010-redis-working-memory-rejected.md"
174
+ - ".architecture/decisions/adrs/011-database-side-embedding-generation-with-pgai.md"
175
+ - ".architecture/decisions/adrs/012-llm-driven-ontology-topic-extraction.md"
176
+ - ".architecture/decisions/adrs/013-activerecord-orm-and-many-to-many-tagging.md"
177
+ - ".architecture/decisions/adrs/014-client-side-embedding-generation-workflow.md"
178
+ - ".architecture/decisions/adrs/015-hierarchical-tag-ontology-and-llm-extraction.md"
179
+ - ".architecture/decisions/adrs/016-async-embedding-and-tag-generation.md"
180
+ - ".architecture/members.yml"
181
+ - ".architecture/reviews/2025-10-29-llm-configuration-and-async-processing-review.md"
182
+ - ".architecture/reviews/initial-system-analysis.md"
183
+ - ".envrc"
184
+ - ".irbrc"
185
+ - CHANGELOG.md
186
+ - COMMITS.md
187
+ - LICENSE
188
+ - README.md
189
+ - Rakefile
190
+ - SETUP.md
191
+ - config/database.yml
192
+ - db/migrate/20250101000001_enable_extensions.rb
193
+ - db/migrate/20250101000002_create_robots.rb
194
+ - db/migrate/20250101000003_create_nodes.rb
195
+ - db/migrate/20250101000005_create_tags.rb
196
+ - db/migrate/20250101000007_add_node_vector_indexes.rb
197
+ - db/schema.sql
198
+ - db/seed_data/README.md
199
+ - db/seed_data/presidents.md
200
+ - db/seed_data/states.md
201
+ - db/seeds.rb
202
+ - dbdoc/README.md
203
+ - dbdoc/public.node_stats.md
204
+ - dbdoc/public.node_stats.svg
205
+ - dbdoc/public.node_tags.md
206
+ - dbdoc/public.node_tags.svg
207
+ - dbdoc/public.nodes.md
208
+ - dbdoc/public.nodes.svg
209
+ - dbdoc/public.nodes_tags.md
210
+ - dbdoc/public.nodes_tags.svg
211
+ - dbdoc/public.ontology_structure.md
212
+ - dbdoc/public.ontology_structure.svg
213
+ - dbdoc/public.operations_log.md
214
+ - dbdoc/public.operations_log.svg
215
+ - dbdoc/public.relationships.md
216
+ - dbdoc/public.relationships.svg
217
+ - dbdoc/public.robot_activity.md
218
+ - dbdoc/public.robot_activity.svg
219
+ - dbdoc/public.robots.md
220
+ - dbdoc/public.robots.svg
221
+ - dbdoc/public.schema_migrations.md
222
+ - dbdoc/public.schema_migrations.svg
223
+ - dbdoc/public.tags.md
224
+ - dbdoc/public.tags.svg
225
+ - dbdoc/public.topic_relationships.md
226
+ - dbdoc/public.topic_relationships.svg
227
+ - dbdoc/schema.json
228
+ - dbdoc/schema.svg
229
+ - docs/api/database.md
230
+ - docs/api/embedding-service.md
231
+ - docs/api/htm.md
232
+ - docs/api/index.md
233
+ - docs/api/long-term-memory.md
234
+ - docs/api/working-memory.md
235
+ - docs/architecture/adrs/001-postgresql-timescaledb.md
236
+ - docs/architecture/adrs/002-two-tier-memory.md
237
+ - docs/architecture/adrs/003-ollama-embeddings.md
238
+ - docs/architecture/adrs/004-hive-mind.md
239
+ - docs/architecture/adrs/005-rag-retrieval.md
240
+ - docs/architecture/adrs/006-context-assembly.md
241
+ - docs/architecture/adrs/007-eviction-strategy.md
242
+ - docs/architecture/adrs/008-robot-identification.md
243
+ - docs/architecture/adrs/009-never-forget.md
244
+ - docs/architecture/adrs/010-redis-working-memory-rejected.md
245
+ - docs/architecture/adrs/011-pgai-integration.md
246
+ - docs/architecture/adrs/index.md
247
+ - docs/architecture/hive-mind.md
248
+ - docs/architecture/index.md
249
+ - docs/architecture/overview.md
250
+ - docs/architecture/two-tier-memory.md
251
+ - docs/assets/css/custom.css
252
+ - docs/assets/images/htm-core-components.svg
253
+ - docs/assets/images/htm-database-schema.svg
254
+ - docs/assets/images/htm-hive-mind-architecture.svg
255
+ - docs/assets/images/htm-importance-scoring-framework.svg
256
+ - docs/assets/images/htm-layered-architecture.svg
257
+ - docs/assets/images/htm-long-term-memory-architecture.svg
258
+ - docs/assets/images/htm-working-memory-architecture.svg
259
+ - docs/assets/images/htm.jpg
260
+ - docs/assets/images/htm_demo.gif
261
+ - docs/assets/js/mathjax.js
262
+ - docs/assets/videos/htm_video.mp4
263
+ - docs/database_rake_tasks.md
264
+ - docs/development/contributing.md
265
+ - docs/development/index.md
266
+ - docs/development/schema.md
267
+ - docs/development/setup.md
268
+ - docs/development/testing.md
269
+ - docs/guides/adding-memories.md
270
+ - docs/guides/context-assembly.md
271
+ - docs/guides/getting-started.md
272
+ - docs/guides/index.md
273
+ - docs/guides/long-term-memory.md
274
+ - docs/guides/multi-robot.md
275
+ - docs/guides/recalling-memories.md
276
+ - docs/guides/search-strategies.md
277
+ - docs/guides/working-memory.md
278
+ - docs/index.md
279
+ - docs/installation.md
280
+ - docs/multi_framework_support.md
281
+ - docs/quick-start.md
282
+ - docs/setup_local_database.md
283
+ - docs/using_rake_tasks_in_your_app.md
284
+ - examples/basic_usage.rb
285
+ - examples/cli_app/README.md
286
+ - examples/cli_app/htm_cli.rb
287
+ - examples/custom_llm_configuration.rb
288
+ - examples/example_app/Rakefile
289
+ - examples/example_app/app.rb
290
+ - examples/sinatra_app/Gemfile
291
+ - examples/sinatra_app/app.rb
292
+ - lib/htm.rb
293
+ - lib/htm/active_record_config.rb
294
+ - lib/htm/configuration.rb
295
+ - lib/htm/database.rb
296
+ - lib/htm/embedding_service.rb
297
+ - lib/htm/errors.rb
298
+ - lib/htm/job_adapter.rb
299
+ - lib/htm/jobs/generate_embedding_job.rb
300
+ - lib/htm/jobs/generate_tags_job.rb
301
+ - lib/htm/long_term_memory.rb
302
+ - lib/htm/models/node.rb
303
+ - lib/htm/models/node_tag.rb
304
+ - lib/htm/models/robot.rb
305
+ - lib/htm/models/tag.rb
306
+ - lib/htm/railtie.rb
307
+ - lib/htm/sinatra.rb
308
+ - lib/htm/tag_service.rb
309
+ - lib/htm/tasks.rb
310
+ - lib/htm/version.rb
311
+ - lib/htm/working_memory.rb
312
+ - lib/tasks/db.rake
313
+ - lib/tasks/htm.rake
314
+ - lib/tasks/jobs.rake
315
+ - mkdocs.yml
316
+ - scripts/install_local_database.sh
317
+ homepage: https://github.com/madbomber/htm
318
+ licenses:
319
+ - MIT
320
+ metadata:
321
+ homepage_uri: https://github.com/madbomber/htm
322
+ source_code_uri: https://github.com/madbomber/htm
323
+ changelog_uri: https://github.com/madbomber/htm/blob/main/CHANGELOG.md
324
+ rdoc_options: []
325
+ require_paths:
326
+ - lib
327
+ required_ruby_version: !ruby/object:Gem::Requirement
328
+ requirements:
329
+ - - ">="
330
+ - !ruby/object:Gem::Version
331
+ version: 3.0.0
332
+ required_rubygems_version: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - ">="
335
+ - !ruby/object:Gem::Version
336
+ version: '0'
337
+ requirements: []
338
+ rubygems_version: 3.7.2
339
+ specification_version: 4
340
+ summary: Hierarchical Temporary Memory for LLM robots
341
+ test_files: []