htm 0.0.14 → 0.0.15
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -0
- data/README.md +269 -79
- data/db/migrate/00003_create_file_sources.rb +5 -0
- data/db/migrate/00004_create_nodes.rb +17 -0
- data/db/migrate/00005_create_tags.rb +7 -0
- data/db/migrate/00006_create_node_tags.rb +2 -0
- data/db/migrate/00007_create_robot_nodes.rb +7 -0
- data/db/schema.sql +41 -29
- data/docs/api/yard/HTM/Configuration.md +54 -0
- data/docs/api/yard/HTM/Database.md +13 -10
- data/docs/api/yard/HTM/EmbeddingService.md +5 -1
- data/docs/api/yard/HTM/LongTermMemory.md +18 -277
- data/docs/api/yard/HTM/PropositionError.md +18 -0
- data/docs/api/yard/HTM/PropositionService.md +66 -0
- data/docs/api/yard/HTM/QueryCache.md +88 -0
- data/docs/api/yard/HTM/RobotGroup.md +481 -0
- data/docs/api/yard/HTM/SqlBuilder.md +108 -0
- data/docs/api/yard/HTM/TagService.md +4 -0
- data/docs/api/yard/HTM/Telemetry/NullInstrument.md +13 -0
- data/docs/api/yard/HTM/Telemetry/NullMeter.md +15 -0
- data/docs/api/yard/HTM/Telemetry.md +109 -0
- data/docs/api/yard/HTM/WorkingMemoryChannel.md +176 -0
- data/docs/api/yard/HTM.md +11 -23
- data/docs/api/yard/index.csv +102 -25
- data/docs/api/yard-reference.md +8 -0
- data/docs/assets/images/multi-provider-failover.svg +51 -0
- data/docs/assets/images/robot-group-architecture.svg +65 -0
- data/docs/database/README.md +3 -3
- data/docs/database/public.file_sources.svg +29 -21
- data/docs/database/public.node_tags.md +2 -0
- data/docs/database/public.node_tags.svg +53 -41
- data/docs/database/public.nodes.md +2 -0
- data/docs/database/public.nodes.svg +52 -40
- data/docs/database/public.robot_nodes.md +2 -0
- data/docs/database/public.robot_nodes.svg +30 -22
- data/docs/database/public.robots.svg +16 -12
- data/docs/database/public.tags.md +3 -0
- data/docs/database/public.tags.svg +41 -33
- data/docs/database/schema.json +66 -0
- data/docs/database/schema.svg +60 -48
- data/docs/development/index.md +13 -0
- data/docs/development/rake-tasks.md +1068 -0
- data/docs/getting-started/quick-start.md +144 -155
- data/docs/guides/adding-memories.md +2 -3
- data/docs/guides/context-assembly.md +185 -184
- data/docs/guides/getting-started.md +154 -148
- data/docs/guides/index.md +7 -0
- data/docs/guides/long-term-memory.md +60 -92
- data/docs/guides/mcp-server.md +617 -0
- data/docs/guides/multi-robot.md +249 -345
- data/docs/guides/recalling-memories.md +153 -163
- data/docs/guides/robot-groups.md +604 -0
- data/docs/guides/search-strategies.md +61 -58
- data/docs/guides/working-memory.md +103 -136
- data/docs/index.md +30 -26
- data/examples/robot_groups/robot_worker.rb +1 -2
- data/examples/robot_groups/same_process.rb +1 -4
- data/lib/htm/robot_group.rb +721 -0
- data/lib/htm/version.rb +1 -1
- data/lib/htm/working_memory_channel.rb +250 -0
- data/lib/htm.rb +2 -0
- data/mkdocs.yml +2 -0
- metadata +18 -9
- data/db/migrate/00009_add_working_memory_to_robot_nodes.rb +0 -12
- data/db/migrate/00010_add_soft_delete_to_associations.rb +0 -29
- data/db/migrate/00011_add_performance_indexes.rb +0 -21
- data/db/migrate/00012_add_tags_trigram_index.rb +0 -18
- data/db/migrate/00013_enable_lz4_compression.rb +0 -43
- data/examples/robot_groups/lib/robot_group.rb +0 -419
- data/examples/robot_groups/lib/working_memory_channel.rb +0 -140
data/docs/api/yard/index.csv
CHANGED
|
@@ -15,10 +15,23 @@ HTM::Observability.record_query_timing,Method,HTM/Observability.md#method-c-reco
|
|
|
15
15
|
HTM::Observability.record_tag_timing,Method,HTM/Observability.md#method-c-record_tag_timing
|
|
16
16
|
HTM::Observability.reset_metrics!,Method,HTM/Observability.md#method-c-reset_metrics!
|
|
17
17
|
HTM::Observability.service_timing_stats,Method,HTM/Observability.md#method-c-service_timing_stats
|
|
18
|
+
HTM::Telemetry,Module,HTM/Telemetry.md
|
|
19
|
+
HTM::Telemetry.cache_operations,Method,HTM/Telemetry.md#method-c-cache_operations
|
|
20
|
+
HTM::Telemetry.embedding_latency,Method,HTM/Telemetry.md#method-c-embedding_latency
|
|
21
|
+
HTM::Telemetry.enabled?,Method,HTM/Telemetry.md#method-c-enabled?
|
|
22
|
+
HTM::Telemetry.job_counter,Method,HTM/Telemetry.md#method-c-job_counter
|
|
23
|
+
HTM::Telemetry.measure,Method,HTM/Telemetry.md#method-c-measure
|
|
24
|
+
HTM::Telemetry.meter,Method,HTM/Telemetry.md#method-c-meter
|
|
25
|
+
HTM::Telemetry.reset!,Method,HTM/Telemetry.md#method-c-reset!
|
|
26
|
+
HTM::Telemetry.sdk_available?,Method,HTM/Telemetry.md#method-c-sdk_available?
|
|
27
|
+
HTM::Telemetry.search_latency,Method,HTM/Telemetry.md#method-c-search_latency
|
|
28
|
+
HTM::Telemetry.setup,Method,HTM/Telemetry.md#method-c-setup
|
|
29
|
+
HTM::Telemetry.tag_latency,Method,HTM/Telemetry.md#method-c-tag_latency
|
|
18
30
|
HTM,Class,HTM.md
|
|
19
31
|
HTM.configure,Method,HTM.md#method-c-configure
|
|
20
32
|
HTM.count_tokens,Method,HTM.md#method-c-count_tokens
|
|
21
33
|
HTM.embed,Method,HTM.md#method-c-embed
|
|
34
|
+
HTM.extract_propositions,Method,HTM.md#method-c-extract_propositions
|
|
22
35
|
HTM.extract_tags,Method,HTM.md#method-c-extract_tags
|
|
23
36
|
HTM.logger,Method,HTM.md#method-c-logger
|
|
24
37
|
HTM.reset_configuration!,Method,HTM.md#method-c-reset_configuration!
|
|
@@ -55,6 +68,11 @@ azure_endpoint,Attribute,HTM/Configuration.md#attribute-i-azure_endpoint
|
|
|
55
68
|
bedrock_access_key,Attribute,HTM/Configuration.md#attribute-i-bedrock_access_key
|
|
56
69
|
bedrock_region,Attribute,HTM/Configuration.md#attribute-i-bedrock_region
|
|
57
70
|
bedrock_secret_key,Attribute,HTM/Configuration.md#attribute-i-bedrock_secret_key
|
|
71
|
+
chunk_overlap,Attribute,HTM/Configuration.md#attribute-i-chunk_overlap
|
|
72
|
+
chunk_size,Attribute,HTM/Configuration.md#attribute-i-chunk_size
|
|
73
|
+
circuit_breaker_failure_threshold,Attribute,HTM/Configuration.md#attribute-i-circuit_breaker_failure_threshold
|
|
74
|
+
circuit_breaker_half_open_max_calls,Attribute,HTM/Configuration.md#attribute-i-circuit_breaker_half_open_max_calls
|
|
75
|
+
circuit_breaker_reset_timeout,Attribute,HTM/Configuration.md#attribute-i-circuit_breaker_reset_timeout
|
|
58
76
|
connection_timeout,Attribute,HTM/Configuration.md#attribute-i-connection_timeout
|
|
59
77
|
deepseek_api_key,Attribute,HTM/Configuration.md#attribute-i-deepseek_api_key
|
|
60
78
|
embedding_dimensions,Attribute,HTM/Configuration.md#attribute-i-embedding_dimensions
|
|
@@ -62,19 +80,32 @@ embedding_generator,Attribute,HTM/Configuration.md#attribute-i-embedding_generat
|
|
|
62
80
|
embedding_model,Attribute,HTM/Configuration.md#attribute-i-embedding_model
|
|
63
81
|
embedding_provider,Attribute,HTM/Configuration.md#attribute-i-embedding_provider
|
|
64
82
|
embedding_timeout,Attribute,HTM/Configuration.md#attribute-i-embedding_timeout
|
|
83
|
+
extract_propositions,Attribute,HTM/Configuration.md#attribute-i-extract_propositions
|
|
65
84
|
gemini_api_key,Attribute,HTM/Configuration.md#attribute-i-gemini_api_key
|
|
66
85
|
huggingface_api_key,Attribute,HTM/Configuration.md#attribute-i-huggingface_api_key
|
|
67
86
|
job_backend,Attribute,HTM/Configuration.md#attribute-i-job_backend
|
|
68
87
|
logger,Attribute,HTM/Configuration.md#attribute-i-logger
|
|
88
|
+
max_embedding_dimension,Attribute,HTM/Configuration.md#attribute-i-max_embedding_dimension
|
|
89
|
+
max_tag_depth,Attribute,HTM/Configuration.md#attribute-i-max_tag_depth
|
|
69
90
|
ollama_url,Attribute,HTM/Configuration.md#attribute-i-ollama_url
|
|
70
91
|
openai_api_key,Attribute,HTM/Configuration.md#attribute-i-openai_api_key
|
|
71
92
|
openai_organization,Attribute,HTM/Configuration.md#attribute-i-openai_organization
|
|
72
93
|
openai_project,Attribute,HTM/Configuration.md#attribute-i-openai_project
|
|
73
94
|
openrouter_api_key,Attribute,HTM/Configuration.md#attribute-i-openrouter_api_key
|
|
95
|
+
proposition_extractor,Attribute,HTM/Configuration.md#attribute-i-proposition_extractor
|
|
96
|
+
proposition_model,Attribute,HTM/Configuration.md#attribute-i-proposition_model
|
|
97
|
+
proposition_provider,Attribute,HTM/Configuration.md#attribute-i-proposition_provider
|
|
98
|
+
proposition_timeout,Attribute,HTM/Configuration.md#attribute-i-proposition_timeout
|
|
99
|
+
relevance_access_weight,Attribute,HTM/Configuration.md#attribute-i-relevance_access_weight
|
|
100
|
+
relevance_recency_half_life_hours,Attribute,HTM/Configuration.md#attribute-i-relevance_recency_half_life_hours
|
|
101
|
+
relevance_recency_weight,Attribute,HTM/Configuration.md#attribute-i-relevance_recency_weight
|
|
102
|
+
relevance_semantic_weight,Attribute,HTM/Configuration.md#attribute-i-relevance_semantic_weight
|
|
103
|
+
relevance_tag_weight,Attribute,HTM/Configuration.md#attribute-i-relevance_tag_weight
|
|
74
104
|
tag_extractor,Attribute,HTM/Configuration.md#attribute-i-tag_extractor
|
|
75
105
|
tag_model,Attribute,HTM/Configuration.md#attribute-i-tag_model
|
|
76
106
|
tag_provider,Attribute,HTM/Configuration.md#attribute-i-tag_provider
|
|
77
107
|
tag_timeout,Attribute,HTM/Configuration.md#attribute-i-tag_timeout
|
|
108
|
+
telemetry_enabled,Attribute,HTM/Configuration.md#attribute-i-telemetry_enabled
|
|
78
109
|
token_counter,Attribute,HTM/Configuration.md#attribute-i-token_counter
|
|
79
110
|
week_start,Attribute,HTM/Configuration.md#attribute-i-week_start
|
|
80
111
|
HTM::Database,Class,HTM/Database.md
|
|
@@ -94,6 +125,7 @@ HTM::EmbeddingService,Class,HTM/EmbeddingService.md
|
|
|
94
125
|
HTM::EmbeddingService.circuit_breaker,Method,HTM/EmbeddingService.md#method-c-circuit_breaker
|
|
95
126
|
HTM::EmbeddingService.format_for_storage,Method,HTM/EmbeddingService.md#method-c-format_for_storage
|
|
96
127
|
HTM::EmbeddingService.generate,Method,HTM/EmbeddingService.md#method-c-generate
|
|
128
|
+
HTM::EmbeddingService.max_dimension,Method,HTM/EmbeddingService.md#method-c-max_dimension
|
|
97
129
|
HTM::EmbeddingService.pad_embedding,Method,HTM/EmbeddingService.md#method-c-pad_embedding
|
|
98
130
|
HTM::EmbeddingService.reset_circuit_breaker!,Method,HTM/EmbeddingService.md#method-c-reset_circuit_breaker!
|
|
99
131
|
HTM::EmbeddingService.validate_embedding!,Method,HTM/EmbeddingService.md#method-c-validate_embedding!
|
|
@@ -103,51 +135,87 @@ HTM::ResourceExhaustedError,Class,HTM/ResourceExhaustedError.md
|
|
|
103
135
|
HTM::NotFoundError,Class,HTM/NotFoundError.md
|
|
104
136
|
HTM::EmbeddingError,Class,HTM/EmbeddingError.md
|
|
105
137
|
HTM::TagError,Class,HTM/TagError.md
|
|
138
|
+
HTM::PropositionError,Class,HTM/PropositionError.md
|
|
106
139
|
HTM::DatabaseError,Class,HTM/DatabaseError.md
|
|
107
140
|
HTM::QueryTimeoutError,Class,HTM/QueryTimeoutError.md
|
|
108
141
|
HTM::AuthorizationError,Class,HTM/AuthorizationError.md
|
|
109
142
|
HTM::CircuitBreakerOpenError,Class,HTM/CircuitBreakerOpenError.md
|
|
110
143
|
HTM::LongTermMemory,Class,HTM/LongTermMemory.md
|
|
111
|
-
HTM::LongTermMemory.add,Method,HTM/LongTermMemory.md#method-i-add
|
|
112
|
-
HTM::LongTermMemory.add_tag,Method,HTM/LongTermMemory.md#method-i-add_tag
|
|
113
|
-
HTM::LongTermMemory.batch_load_node_tags,Method,HTM/LongTermMemory.md#method-i-batch_load_node_tags
|
|
114
|
-
HTM::LongTermMemory.calculate_relevance,Method,HTM/LongTermMemory.md#method-i-calculate_relevance
|
|
115
144
|
HTM::LongTermMemory.clear_cache!,Method,HTM/LongTermMemory.md#method-i-clear_cache!
|
|
116
|
-
HTM::LongTermMemory.delete,Method,HTM/LongTermMemory.md#method-i-delete
|
|
117
|
-
HTM::LongTermMemory.exists?,Method,HTM/LongTermMemory.md#method-i-exists?
|
|
118
|
-
HTM::LongTermMemory.find_query_matching_tags,Method,HTM/LongTermMemory.md#method-i-find_query_matching_tags
|
|
119
|
-
HTM::LongTermMemory.get_node_tags,Method,HTM/LongTermMemory.md#method-i-get_node_tags
|
|
120
145
|
HTM::LongTermMemory.initialize,Method,HTM/LongTermMemory.md#method-i-initialize
|
|
121
|
-
HTM::LongTermMemory.link_robot_to_node,Method,HTM/LongTermMemory.md#method-i-link_robot_to_node
|
|
122
|
-
HTM::LongTermMemory.mark_evicted,Method,HTM/LongTermMemory.md#method-i-mark_evicted
|
|
123
|
-
HTM::LongTermMemory.node_topics,Method,HTM/LongTermMemory.md#method-i-node_topics
|
|
124
|
-
HTM::LongTermMemory.nodes_by_topic,Method,HTM/LongTermMemory.md#method-i-nodes_by_topic
|
|
125
|
-
HTM::LongTermMemory.ontology_structure,Method,HTM/LongTermMemory.md#method-i-ontology_structure
|
|
126
146
|
HTM::LongTermMemory.pool_size,Method,HTM/LongTermMemory.md#method-i-pool_size
|
|
127
|
-
HTM::LongTermMemory.popular_tags,Method,HTM/LongTermMemory.md#method-i-popular_tags
|
|
128
|
-
HTM::LongTermMemory.register_robot,Method,HTM/LongTermMemory.md#method-i-register_robot
|
|
129
|
-
HTM::LongTermMemory.retrieve,Method,HTM/LongTermMemory.md#method-i-retrieve
|
|
130
|
-
HTM::LongTermMemory.search,Method,HTM/LongTermMemory.md#method-i-search
|
|
131
|
-
HTM::LongTermMemory.search_by_tags,Method,HTM/LongTermMemory.md#method-i-search_by_tags
|
|
132
|
-
HTM::LongTermMemory.search_fulltext,Method,HTM/LongTermMemory.md#method-i-search_fulltext
|
|
133
|
-
HTM::LongTermMemory.search_hybrid,Method,HTM/LongTermMemory.md#method-i-search_hybrid
|
|
134
|
-
HTM::LongTermMemory.search_with_relevance,Method,HTM/LongTermMemory.md#method-i-search_with_relevance
|
|
135
147
|
HTM::LongTermMemory.shutdown,Method,HTM/LongTermMemory.md#method-i-shutdown
|
|
136
148
|
HTM::LongTermMemory.stats,Method,HTM/LongTermMemory.md#method-i-stats
|
|
137
|
-
HTM::LongTermMemory.topic_relationships,Method,HTM/LongTermMemory.md#method-i-topic_relationships
|
|
138
|
-
HTM::LongTermMemory.track_access,Method,HTM/LongTermMemory.md#method-i-track_access
|
|
139
|
-
HTM::LongTermMemory.update_last_accessed,Method,HTM/LongTermMemory.md#method-i-update_last_accessed
|
|
140
|
-
HTM::LongTermMemory.update_robot_activity,Method,HTM/LongTermMemory.md#method-i-update_robot_activity
|
|
141
149
|
query_timeout,Attribute,HTM/LongTermMemory.md#attribute-i-query_timeout
|
|
150
|
+
HTM::PropositionService,Class,HTM/PropositionService.md
|
|
151
|
+
HTM::PropositionService.circuit_breaker,Method,HTM/PropositionService.md#method-c-circuit_breaker
|
|
152
|
+
HTM::PropositionService.extract,Method,HTM/PropositionService.md#method-c-extract
|
|
153
|
+
HTM::PropositionService.parse_propositions,Method,HTM/PropositionService.md#method-c-parse_propositions
|
|
154
|
+
HTM::PropositionService.reset_circuit_breaker!,Method,HTM/PropositionService.md#method-c-reset_circuit_breaker!
|
|
155
|
+
HTM::PropositionService.valid_proposition?,Method,HTM/PropositionService.md#method-c-valid_proposition?
|
|
156
|
+
HTM::PropositionService.validate_and_filter_propositions,Method,HTM/PropositionService.md#method-c-validate_and_filter_propositions
|
|
157
|
+
HTM::QueryCache,Class,HTM/QueryCache.md
|
|
158
|
+
HTM::QueryCache.clear!,Method,HTM/QueryCache.md#method-i-clear!
|
|
159
|
+
HTM::QueryCache.enabled?,Method,HTM/QueryCache.md#method-i-enabled?
|
|
160
|
+
HTM::QueryCache.fetch,Method,HTM/QueryCache.md#method-i-fetch
|
|
161
|
+
HTM::QueryCache.initialize,Method,HTM/QueryCache.md#method-i-initialize
|
|
162
|
+
HTM::QueryCache.invalidate!,Method,HTM/QueryCache.md#method-i-invalidate!
|
|
163
|
+
HTM::QueryCache.invalidate_methods!,Method,HTM/QueryCache.md#method-i-invalidate_methods!
|
|
164
|
+
HTM::QueryCache.stats,Method,HTM/QueryCache.md#method-i-stats
|
|
165
|
+
enabled,Attribute,HTM/QueryCache.md#attribute-i-enabled
|
|
142
166
|
HTM::Railtie,Class,HTM/Railtie.md
|
|
167
|
+
HTM::RobotGroup,Class,HTM/RobotGroup.md
|
|
168
|
+
HTM::RobotGroup.active?,Method,HTM/RobotGroup.md#method-i-active?
|
|
169
|
+
HTM::RobotGroup.active_robot_names,Method,HTM/RobotGroup.md#method-i-active_robot_names
|
|
170
|
+
HTM::RobotGroup.add_active,Method,HTM/RobotGroup.md#method-i-add_active
|
|
171
|
+
HTM::RobotGroup.add_passive,Method,HTM/RobotGroup.md#method-i-add_passive
|
|
172
|
+
HTM::RobotGroup.clear_working_memory,Method,HTM/RobotGroup.md#method-i-clear_working_memory
|
|
173
|
+
HTM::RobotGroup.demote,Method,HTM/RobotGroup.md#method-i-demote
|
|
174
|
+
HTM::RobotGroup.failover!,Method,HTM/RobotGroup.md#method-i-failover!
|
|
175
|
+
HTM::RobotGroup.in_sync?,Method,HTM/RobotGroup.md#method-i-in_sync?
|
|
176
|
+
HTM::RobotGroup.initialize,Method,HTM/RobotGroup.md#method-i-initialize
|
|
177
|
+
HTM::RobotGroup.member?,Method,HTM/RobotGroup.md#method-i-member?
|
|
178
|
+
HTM::RobotGroup.member_ids,Method,HTM/RobotGroup.md#method-i-member_ids
|
|
179
|
+
HTM::RobotGroup.passive?,Method,HTM/RobotGroup.md#method-i-passive?
|
|
180
|
+
HTM::RobotGroup.passive_robot_names,Method,HTM/RobotGroup.md#method-i-passive_robot_names
|
|
181
|
+
HTM::RobotGroup.promote,Method,HTM/RobotGroup.md#method-i-promote
|
|
182
|
+
HTM::RobotGroup.recall,Method,HTM/RobotGroup.md#method-i-recall
|
|
183
|
+
HTM::RobotGroup.remember,Method,HTM/RobotGroup.md#method-i-remember
|
|
184
|
+
HTM::RobotGroup.remove,Method,HTM/RobotGroup.md#method-i-remove
|
|
185
|
+
HTM::RobotGroup.shutdown,Method,HTM/RobotGroup.md#method-i-shutdown
|
|
186
|
+
HTM::RobotGroup.status,Method,HTM/RobotGroup.md#method-i-status
|
|
187
|
+
HTM::RobotGroup.sync_all,Method,HTM/RobotGroup.md#method-i-sync_all
|
|
188
|
+
HTM::RobotGroup.sync_robot,Method,HTM/RobotGroup.md#method-i-sync_robot
|
|
189
|
+
HTM::RobotGroup.sync_stats,Method,HTM/RobotGroup.md#method-i-sync_stats
|
|
190
|
+
HTM::RobotGroup.transfer_working_memory,Method,HTM/RobotGroup.md#method-i-transfer_working_memory
|
|
191
|
+
HTM::RobotGroup.working_memory_contents,Method,HTM/RobotGroup.md#method-i-working_memory_contents
|
|
192
|
+
channel,Attribute,HTM/RobotGroup.md#attribute-i-channel
|
|
193
|
+
max_tokens,Attribute,HTM/RobotGroup.md#attribute-i-max_tokens
|
|
194
|
+
name,Attribute,HTM/RobotGroup.md#attribute-i-name
|
|
195
|
+
HTM::SqlBuilder,Class,HTM/SqlBuilder.md
|
|
196
|
+
HTM::SqlBuilder.apply_metadata,Method,HTM/SqlBuilder.md#method-c-apply_metadata
|
|
197
|
+
HTM::SqlBuilder.apply_timeframe,Method,HTM/SqlBuilder.md#method-c-apply_timeframe
|
|
198
|
+
HTM::SqlBuilder.metadata_condition,Method,HTM/SqlBuilder.md#method-c-metadata_condition
|
|
199
|
+
HTM::SqlBuilder.pad_embedding,Method,HTM/SqlBuilder.md#method-c-pad_embedding
|
|
200
|
+
HTM::SqlBuilder.sanitize_embedding,Method,HTM/SqlBuilder.md#method-c-sanitize_embedding
|
|
201
|
+
HTM::SqlBuilder.sanitize_like_pattern,Method,HTM/SqlBuilder.md#method-c-sanitize_like_pattern
|
|
202
|
+
HTM::SqlBuilder.timeframe_condition,Method,HTM/SqlBuilder.md#method-c-timeframe_condition
|
|
143
203
|
HTM::TagService,Class,HTM/TagService.md
|
|
144
204
|
HTM::TagService.circuit_breaker,Method,HTM/TagService.md#method-c-circuit_breaker
|
|
145
205
|
HTM::TagService.extract,Method,HTM/TagService.md#method-c-extract
|
|
206
|
+
HTM::TagService.max_depth,Method,HTM/TagService.md#method-c-max_depth
|
|
146
207
|
HTM::TagService.parse_hierarchy,Method,HTM/TagService.md#method-c-parse_hierarchy
|
|
147
208
|
HTM::TagService.parse_tags,Method,HTM/TagService.md#method-c-parse_tags
|
|
148
209
|
HTM::TagService.reset_circuit_breaker!,Method,HTM/TagService.md#method-c-reset_circuit_breaker!
|
|
149
210
|
HTM::TagService.valid_tag?,Method,HTM/TagService.md#method-c-valid_tag?
|
|
150
211
|
HTM::TagService.validate_and_filter_tags,Method,HTM/TagService.md#method-c-validate_and_filter_tags
|
|
212
|
+
HTM::Telemetry::NullMeter,Class,HTM/Telemetry/NullMeter.md
|
|
213
|
+
HTM::Telemetry::NullMeter.create_counter,Method,HTM/Telemetry/NullMeter.md#method-i-create_counter
|
|
214
|
+
HTM::Telemetry::NullMeter.create_histogram,Method,HTM/Telemetry/NullMeter.md#method-i-create_histogram
|
|
215
|
+
HTM::Telemetry::NullMeter.create_up_down_counter,Method,HTM/Telemetry/NullMeter.md#method-i-create_up_down_counter
|
|
216
|
+
HTM::Telemetry::NullInstrument,Class,HTM/Telemetry/NullInstrument.md
|
|
217
|
+
HTM::Telemetry::NullInstrument.add,Method,HTM/Telemetry/NullInstrument.md#method-i-add
|
|
218
|
+
HTM::Telemetry::NullInstrument.record,Method,HTM/Telemetry/NullInstrument.md#method-i-record
|
|
151
219
|
HTM::TimeframeExtractor,Class,HTM/TimeframeExtractor.md
|
|
152
220
|
HTM::TimeframeExtractor.extract,Method,HTM/TimeframeExtractor.md#method-c-extract
|
|
153
221
|
HTM::TimeframeExtractor.temporal?,Method,HTM/TimeframeExtractor.md#method-c-temporal?
|
|
@@ -162,6 +230,15 @@ HTM::Timeframe::Result,Class,HTM/Timeframe/Result.md
|
|
|
162
230
|
extracted,Attribute,HTM/Timeframe/Result.md#attribute-i-extracted
|
|
163
231
|
query,Attribute,HTM/Timeframe/Result.md#attribute-i-query
|
|
164
232
|
timeframe,Attribute,HTM/Timeframe/Result.md#attribute-i-timeframe
|
|
233
|
+
HTM::WorkingMemoryChannel,Class,HTM/WorkingMemoryChannel.md
|
|
234
|
+
HTM::WorkingMemoryChannel.channel_name,Method,HTM/WorkingMemoryChannel.md#method-i-channel_name
|
|
235
|
+
HTM::WorkingMemoryChannel.initialize,Method,HTM/WorkingMemoryChannel.md#method-i-initialize
|
|
236
|
+
HTM::WorkingMemoryChannel.listening?,Method,HTM/WorkingMemoryChannel.md#method-i-listening?
|
|
237
|
+
HTM::WorkingMemoryChannel.notify,Method,HTM/WorkingMemoryChannel.md#method-i-notify
|
|
238
|
+
HTM::WorkingMemoryChannel.on_change,Method,HTM/WorkingMemoryChannel.md#method-i-on_change
|
|
239
|
+
HTM::WorkingMemoryChannel.start_listening,Method,HTM/WorkingMemoryChannel.md#method-i-start_listening
|
|
240
|
+
HTM::WorkingMemoryChannel.stop_listening,Method,HTM/WorkingMemoryChannel.md#method-i-stop_listening
|
|
241
|
+
notifications_received,Attribute,HTM/WorkingMemoryChannel.md#attribute-i-notifications_received
|
|
165
242
|
HTM::WorkingMemory,Class,HTM/WorkingMemory.md
|
|
166
243
|
HTM::WorkingMemory.add,Method,HTM/WorkingMemory.md#method-i-add
|
|
167
244
|
HTM::WorkingMemory.add_from_sync,Method,HTM/WorkingMemory.md#method-i-add_from_sync
|
data/docs/api/yard-reference.md
CHANGED
|
@@ -30,12 +30,20 @@ Complete API documentation generated by [YARD](https://yardoc.org/) with [yard-m
|
|
|
30
30
|
| [HTM::JobAdapter](yard/HTM/JobAdapter.md) | Background job abstraction layer |
|
|
31
31
|
| [HTM::LongTermMemory](yard/HTM/LongTermMemory.md) | PostgreSQL-backed permanent storage |
|
|
32
32
|
| [HTM::Observability](yard/HTM/Observability.md) | Metrics and logging instrumentation |
|
|
33
|
+
| [HTM::PropositionService](yard/HTM/PropositionService.md) | HTM::PropositionService class |
|
|
34
|
+
| [HTM::QueryCache](yard/HTM/QueryCache.md) | HTM::QueryCache class |
|
|
35
|
+
| [HTM::RobotGroup](yard/HTM/RobotGroup.md) | HTM::RobotGroup class |
|
|
36
|
+
| [HTM::SqlBuilder](yard/HTM/SqlBuilder.md) | HTM::SqlBuilder class |
|
|
33
37
|
| [HTM::TagService](yard/HTM/TagService.md) | Hierarchical tag extraction service |
|
|
38
|
+
| [HTM::Telemetry](yard/HTM/Telemetry.md) | HTM::Telemetry class |
|
|
39
|
+
| [HTM::Telemetry::NullInstrument](yard/HTM/Telemetry/NullInstrument.md) | HTM::Telemetry::NullInstrument class |
|
|
40
|
+
| [HTM::Telemetry::NullMeter](yard/HTM/Telemetry/NullMeter.md) | HTM::Telemetry::NullMeter class |
|
|
34
41
|
| [HTM::Timeframe](yard/HTM/Timeframe.md) | Time-based query filtering |
|
|
35
42
|
| [HTM::Timeframe::Result](yard/HTM/Timeframe/Result.md) | HTM::Timeframe::Result class |
|
|
36
43
|
| [HTM::TimeframeExtractor](yard/HTM/TimeframeExtractor.md) | Natural language time parsing |
|
|
37
44
|
| [HTM::TimeframeExtractor::Result](yard/HTM/TimeframeExtractor/Result.md) | HTM::TimeframeExtractor::Result class |
|
|
38
45
|
| [HTM::WorkingMemory](yard/HTM/WorkingMemory.md) | Token-limited in-memory cache |
|
|
46
|
+
| [HTM::WorkingMemoryChannel](yard/HTM/WorkingMemoryChannel.md) | HTM::WorkingMemoryChannel class |
|
|
39
47
|
|
|
40
48
|
## Generating Documentation
|
|
41
49
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<svg viewBox="0 0 800 400" xmlns="http://www.w3.org/2000/svg" style="background: transparent;">
|
|
2
|
+
<!-- Title -->
|
|
3
|
+
<text x="400" y="30" text-anchor="middle" fill="#E0E0E0" font-size="16" font-weight="bold">Multi-Provider Failover Strategy</text>
|
|
4
|
+
|
|
5
|
+
<!-- Primary -->
|
|
6
|
+
<rect x="50" y="80" width="200" height="100" fill="rgba(76, 175, 80, 0.2)" stroke="#4CAF50" stroke-width="2" rx="5"/>
|
|
7
|
+
<text x="150" y="105" text-anchor="middle" fill="#4CAF50" font-size="12" font-weight="bold">PRIMARY</text>
|
|
8
|
+
<text x="150" y="130" text-anchor="middle" fill="#E0E0E0" font-size="14">OpenAI GPT-4</text>
|
|
9
|
+
<text x="150" y="155" text-anchor="middle" fill="#B0B0B0" font-size="10">Fast, cost-effective</text>
|
|
10
|
+
<text x="150" y="170" text-anchor="middle" fill="#B0B0B0" font-size="10">JSON output format</text>
|
|
11
|
+
|
|
12
|
+
<!-- Standby 1 -->
|
|
13
|
+
<rect x="300" y="80" width="200" height="100" fill="rgba(255, 152, 0, 0.2)" stroke="#FF9800" stroke-width="2" rx="5"/>
|
|
14
|
+
<text x="400" y="105" text-anchor="middle" fill="#FF9800" font-size="12" font-weight="bold">STANDBY 1</text>
|
|
15
|
+
<text x="400" y="130" text-anchor="middle" fill="#E0E0E0" font-size="14">Anthropic Claude</text>
|
|
16
|
+
<text x="400" y="155" text-anchor="middle" fill="#B0B0B0" font-size="10">Different provider</text>
|
|
17
|
+
<text x="400" y="170" text-anchor="middle" fill="#B0B0B0" font-size="10">XML output format</text>
|
|
18
|
+
|
|
19
|
+
<!-- Standby 2 -->
|
|
20
|
+
<rect x="550" y="80" width="200" height="100" fill="rgba(255, 152, 0, 0.2)" stroke="#FF9800" stroke-width="2" rx="5"/>
|
|
21
|
+
<text x="650" y="105" text-anchor="middle" fill="#FF9800" font-size="12" font-weight="bold">STANDBY 2</text>
|
|
22
|
+
<text x="650" y="130" text-anchor="middle" fill="#E0E0E0" font-size="14">Google Gemini</text>
|
|
23
|
+
<text x="650" y="155" text-anchor="middle" fill="#B0B0B0" font-size="10">Third provider option</text>
|
|
24
|
+
<text x="650" y="170" text-anchor="middle" fill="#B0B0B0" font-size="10">Markdown output format</text>
|
|
25
|
+
|
|
26
|
+
<!-- Arrows -->
|
|
27
|
+
<path d="M 250 130 L 290 130" stroke="#4CAF50" stroke-width="2" marker-end="url(#arrow-fail)"/>
|
|
28
|
+
<path d="M 500 130 L 540 130" stroke="#FF9800" stroke-width="2" marker-end="url(#arrow-fail)"/>
|
|
29
|
+
<text x="270" y="120" fill="#F44336" font-size="10">failover</text>
|
|
30
|
+
<text x="520" y="120" fill="#F44336" font-size="10">failover</text>
|
|
31
|
+
|
|
32
|
+
<!-- Shared Context Box -->
|
|
33
|
+
<rect x="150" y="230" width="500" height="80" fill="rgba(33, 150, 243, 0.15)" stroke="#2196F3" stroke-width="2" rx="5"/>
|
|
34
|
+
<text x="400" y="260" text-anchor="middle" fill="#E0E0E0" font-size="14" font-weight="bold">Shared Working Memory</text>
|
|
35
|
+
<text x="400" y="285" text-anchor="middle" fill="#2196F3" font-size="12">Same context across all providers</text>
|
|
36
|
+
|
|
37
|
+
<!-- Connections to shared -->
|
|
38
|
+
<line x1="150" y1="180" x2="200" y2="230" stroke="#4CAF50" stroke-width="1.5"/>
|
|
39
|
+
<line x1="400" y1="180" x2="400" y2="230" stroke="#FF9800" stroke-width="1.5"/>
|
|
40
|
+
<line x1="650" y1="180" x2="600" y2="230" stroke="#FF9800" stroke-width="1.5"/>
|
|
41
|
+
|
|
42
|
+
<!-- Key points -->
|
|
43
|
+
<text x="400" y="350" text-anchor="middle" fill="#4CAF50" font-size="12">Context is shared</text>
|
|
44
|
+
<text x="400" y="370" text-anchor="middle" fill="#F44336" font-size="12">Prompts are provider-specific</text>
|
|
45
|
+
|
|
46
|
+
<defs>
|
|
47
|
+
<marker id="arrow-fail" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
|
48
|
+
<polygon points="0 0, 10 3, 0 6" fill="#F44336"/>
|
|
49
|
+
</marker>
|
|
50
|
+
</defs>
|
|
51
|
+
</svg>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<svg viewBox="0 0 900 550" xmlns="http://www.w3.org/2000/svg" style="background: transparent;">
|
|
2
|
+
<!-- Title -->
|
|
3
|
+
<text x="450" y="30" text-anchor="middle" fill="#E0E0E0" font-size="18" font-weight="bold">Robot Group: Shared Working Memory + Real-Time Sync</text>
|
|
4
|
+
|
|
5
|
+
<!-- Active Robot 1 -->
|
|
6
|
+
<rect x="50" y="80" width="220" height="120" fill="rgba(76, 175, 80, 0.2)" stroke="#4CAF50" stroke-width="2" rx="5"/>
|
|
7
|
+
<text x="160" y="105" text-anchor="middle" fill="#4CAF50" font-size="12" font-weight="bold">ACTIVE</text>
|
|
8
|
+
<text x="160" y="130" text-anchor="middle" fill="#E0E0E0" font-size="14" font-weight="bold">Primary Agent</text>
|
|
9
|
+
<text x="160" y="155" text-anchor="middle" fill="#B0B0B0" font-size="11">Working Memory: 5 nodes</text>
|
|
10
|
+
<text x="160" y="175" text-anchor="middle" fill="#B0B0B0" font-size="11">Provider: OpenAI</text>
|
|
11
|
+
|
|
12
|
+
<!-- Active Robot 2 -->
|
|
13
|
+
<rect x="340" y="80" width="220" height="120" fill="rgba(76, 175, 80, 0.2)" stroke="#4CAF50" stroke-width="2" rx="5"/>
|
|
14
|
+
<text x="450" y="105" text-anchor="middle" fill="#4CAF50" font-size="12" font-weight="bold">ACTIVE</text>
|
|
15
|
+
<text x="450" y="130" text-anchor="middle" fill="#E0E0E0" font-size="14" font-weight="bold">Secondary Agent</text>
|
|
16
|
+
<text x="450" y="155" text-anchor="middle" fill="#B0B0B0" font-size="11">Working Memory: 5 nodes</text>
|
|
17
|
+
<text x="450" y="175" text-anchor="middle" fill="#B0B0B0" font-size="11">Provider: Anthropic</text>
|
|
18
|
+
|
|
19
|
+
<!-- Passive Robot -->
|
|
20
|
+
<rect x="630" y="80" width="220" height="120" fill="rgba(255, 152, 0, 0.2)" stroke="#FF9800" stroke-width="2" rx="5"/>
|
|
21
|
+
<text x="740" y="105" text-anchor="middle" fill="#FF9800" font-size="12" font-weight="bold">PASSIVE (Standby)</text>
|
|
22
|
+
<text x="740" y="130" text-anchor="middle" fill="#E0E0E0" font-size="14" font-weight="bold">Backup Agent</text>
|
|
23
|
+
<text x="740" y="155" text-anchor="middle" fill="#B0B0B0" font-size="11">Working Memory: 5 nodes</text>
|
|
24
|
+
<text x="740" y="175" text-anchor="middle" fill="#B0B0B0" font-size="11">Provider: Gemini</text>
|
|
25
|
+
|
|
26
|
+
<!-- Sync Layer -->
|
|
27
|
+
<rect x="100" y="250" width="700" height="80" fill="rgba(33, 150, 243, 0.15)" stroke="#2196F3" stroke-width="2" rx="5"/>
|
|
28
|
+
<text x="450" y="280" text-anchor="middle" fill="#E0E0E0" font-size="14" font-weight="bold">Real-Time Sync Layer</text>
|
|
29
|
+
<text x="450" y="305" text-anchor="middle" fill="#2196F3" font-size="12">PostgreSQL LISTEN/NOTIFY (HTM::WorkingMemoryChannel)</text>
|
|
30
|
+
|
|
31
|
+
<!-- Connections to sync layer -->
|
|
32
|
+
<line x1="160" y1="200" x2="160" y2="250" stroke="#4CAF50" stroke-width="2" marker-end="url(#arrow-green)"/>
|
|
33
|
+
<line x1="450" y1="200" x2="450" y2="250" stroke="#4CAF50" stroke-width="2" marker-end="url(#arrow-green)"/>
|
|
34
|
+
<line x1="740" y1="200" x2="740" y2="250" stroke="#FF9800" stroke-width="2" marker-end="url(#arrow-orange)"/>
|
|
35
|
+
|
|
36
|
+
<!-- Shared Long-Term Memory -->
|
|
37
|
+
<ellipse cx="450" cy="430" rx="200" ry="80" fill="rgba(156, 39, 176, 0.2)" stroke="#9C27B0" stroke-width="3"/>
|
|
38
|
+
<text x="450" y="415" text-anchor="middle" fill="#E0E0E0" font-size="14" font-weight="bold">Shared Long-Term Memory</text>
|
|
39
|
+
<text x="450" y="440" text-anchor="middle" fill="#B0B0B0" font-size="12">PostgreSQL (Hive Mind)</text>
|
|
40
|
+
<text x="450" y="460" text-anchor="middle" fill="#9C27B0" font-size="11">All Robots Access Here</text>
|
|
41
|
+
|
|
42
|
+
<!-- Connection from sync to LTM -->
|
|
43
|
+
<line x1="450" y1="330" x2="450" y2="350" stroke="#9C27B0" stroke-width="2" marker-end="url(#arrow-purple)"/>
|
|
44
|
+
|
|
45
|
+
<!-- Arrows -->
|
|
46
|
+
<defs>
|
|
47
|
+
<marker id="arrow-green" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
|
48
|
+
<polygon points="0 0, 10 3, 0 6" fill="#4CAF50"/>
|
|
49
|
+
</marker>
|
|
50
|
+
<marker id="arrow-orange" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
|
51
|
+
<polygon points="0 0, 10 3, 0 6" fill="#FF9800"/>
|
|
52
|
+
</marker>
|
|
53
|
+
<marker id="arrow-purple" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
|
54
|
+
<polygon points="0 0, 10 3, 0 6" fill="#9C27B0"/>
|
|
55
|
+
</marker>
|
|
56
|
+
</defs>
|
|
57
|
+
|
|
58
|
+
<!-- Legend -->
|
|
59
|
+
<rect x="50" y="520" width="15" height="15" fill="rgba(76, 175, 80, 0.3)" stroke="#4CAF50"/>
|
|
60
|
+
<text x="75" y="532" fill="#B0B0B0" font-size="11">Active (handles requests)</text>
|
|
61
|
+
<rect x="250" y="520" width="15" height="15" fill="rgba(255, 152, 0, 0.3)" stroke="#FF9800"/>
|
|
62
|
+
<text x="275" y="532" fill="#B0B0B0" font-size="11">Passive (warm standby)</text>
|
|
63
|
+
<rect x="450" y="520" width="15" height="15" fill="rgba(33, 150, 243, 0.3)" stroke="#2196F3"/>
|
|
64
|
+
<text x="475" y="532" fill="#B0B0B0" font-size="11">Real-time sync</text>
|
|
65
|
+
</svg>
|
data/docs/database/README.md
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
| Name | Columns | Comment | Type |
|
|
6
6
|
| ---- | ------- | ------- | ---- |
|
|
7
7
|
| [public.file_sources](public.file_sources.md) | 9 | Source file metadata for loaded documents | BASE TABLE |
|
|
8
|
-
| [public.node_tags](public.node_tags.md) |
|
|
8
|
+
| [public.node_tags](public.node_tags.md) | 5 | Join table connecting nodes to tags (many-to-many) | BASE TABLE |
|
|
9
9
|
| [public.nodes](public.nodes.md) | 14 | Core memory storage for conversation messages and context | BASE TABLE |
|
|
10
|
-
| [public.robot_nodes](public.robot_nodes.md) |
|
|
10
|
+
| [public.robot_nodes](public.robot_nodes.md) | 10 | Join table connecting robots to nodes (many-to-many) | BASE TABLE |
|
|
11
11
|
| [public.robots](public.robots.md) | 4 | Registry of all LLM robots using the HTM system | BASE TABLE |
|
|
12
12
|
| [public.schema_migrations](public.schema_migrations.md) | 1 | | BASE TABLE |
|
|
13
|
-
| [public.tags](public.tags.md) |
|
|
13
|
+
| [public.tags](public.tags.md) | 4 | Unique tag names for categorization | BASE TABLE |
|
|
14
14
|
|
|
15
15
|
## Stored procedures and functions
|
|
16
16
|
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
<!-- Generated by graphviz version 12.1.2 (20240928.0832)
|
|
5
5
|
-->
|
|
6
6
|
<!-- Title: public.file_sources Pages: 1 -->
|
|
7
|
-
<svg width="1329pt" height="
|
|
8
|
-
viewBox="0.00 0.00 1328.70
|
|
9
|
-
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4
|
|
7
|
+
<svg width="1329pt" height="1500pt"
|
|
8
|
+
viewBox="0.00 0.00 1328.70 1499.60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
9
|
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1495.6)">
|
|
10
10
|
<title>public.file_sources</title>
|
|
11
|
-
<polygon fill="white" stroke="none" points="-4,4 -4,-
|
|
11
|
+
<polygon fill="white" stroke="none" points="-4,4 -4,-1495.6 1324.7,-1495.6 1324.7,4 -4,4"/>
|
|
12
12
|
<!-- public.file_sources -->
|
|
13
13
|
<g id="node1" class="node">
|
|
14
14
|
<title>public.file_sources</title>
|
|
@@ -128,16 +128,20 @@
|
|
|
128
128
|
<!-- public.node_tags -->
|
|
129
129
|
<g id="node3" class="node">
|
|
130
130
|
<title>public.node_tags</title>
|
|
131
|
-
<polygon fill="#efefef" stroke="none" points="43.2,-
|
|
132
|
-
<polygon fill="none" stroke="black" points="43.2,-
|
|
133
|
-
<text text-anchor="start" x="154.32" y="-
|
|
134
|
-
<text text-anchor="start" x="276.8" y="-
|
|
135
|
-
<text text-anchor="start" x="307.92" y="-
|
|
136
|
-
<text text-anchor="start" x="116.72" y="-
|
|
131
|
+
<polygon fill="#efefef" stroke="none" points="43.2,-1325.4 43.2,-1371.4 512.41,-1371.4 512.41,-1325.4 43.2,-1325.4"/>
|
|
132
|
+
<polygon fill="none" stroke="black" points="43.2,-1325.4 43.2,-1371.4 512.41,-1371.4 512.41,-1325.4 43.2,-1325.4"/>
|
|
133
|
+
<text text-anchor="start" x="154.32" y="-1349.2" font-family="Arial Bold" font-size="18.00">public.node_tags</text>
|
|
134
|
+
<text text-anchor="start" x="276.8" y="-1349.2" font-family="Arial" font-size="14.00"> </text>
|
|
135
|
+
<text text-anchor="start" x="307.92" y="-1349.2" font-family="Arial" font-size="14.00" fill="#666666">[BASE TABLE]</text>
|
|
136
|
+
<text text-anchor="start" x="116.72" y="-1334.8" font-family="Arial" font-size="14.00" fill="#333333">Join table connecting nodes to tags (many-to-many)</text>
|
|
137
|
+
<polygon fill="none" stroke="black" points="43.2,-1294.6 43.2,-1325.4 512.41,-1325.4 512.41,-1294.6 43.2,-1294.6"/>
|
|
138
|
+
<text text-anchor="start" x="50.2" y="-1306.8" font-family="Arial" font-size="14.00">created_at </text>
|
|
139
|
+
<text text-anchor="start" x="120.25" y="-1306.8" font-family="Arial" font-size="14.00" fill="#666666">[timestamp with time zone]</text>
|
|
140
|
+
<text text-anchor="start" x="285.97" y="-1306.8" font-family="Arial" font-size="14.00"> When this association was created</text>
|
|
137
141
|
<polygon fill="none" stroke="black" points="43.2,-1263.8 43.2,-1294.6 512.41,-1294.6 512.41,-1263.8 43.2,-1263.8"/>
|
|
138
|
-
<text text-anchor="start" x="50.2" y="-1276" font-family="Arial" font-size="14.00">
|
|
139
|
-
<text text-anchor="start" x="
|
|
140
|
-
<text text-anchor="start" x="285.
|
|
142
|
+
<text text-anchor="start" x="50.2" y="-1276" font-family="Arial" font-size="14.00">deleted_at </text>
|
|
143
|
+
<text text-anchor="start" x="119.48" y="-1276" font-family="Arial" font-size="14.00" fill="#666666">[timestamp with time zone]</text>
|
|
144
|
+
<text text-anchor="start" x="285.21" y="-1276" font-family="Arial" font-size="14.00"> Soft delete timestamp</text>
|
|
141
145
|
<polygon fill="none" stroke="black" points="43.2,-1233 43.2,-1263.8 512.41,-1263.8 512.41,-1233 43.2,-1233"/>
|
|
142
146
|
<text text-anchor="start" x="50.2" y="-1245.2" font-family="Arial" font-size="14.00">id </text>
|
|
143
147
|
<text text-anchor="start" x="64.99" y="-1245.2" font-family="Arial" font-size="14.00" fill="#666666">[bigint]</text>
|
|
@@ -160,15 +164,19 @@
|
|
|
160
164
|
<!-- public.robot_nodes -->
|
|
161
165
|
<g id="node4" class="node">
|
|
162
166
|
<title>public.robot_nodes</title>
|
|
163
|
-
<polygon fill="#efefef" stroke="none" points="617.06,-
|
|
164
|
-
<polygon fill="none" stroke="black" points="617.06,-
|
|
165
|
-
<text text-anchor="start" x="800.32" y="-
|
|
166
|
-
<text text-anchor="start" x="938.8" y="-
|
|
167
|
-
<text text-anchor="start" x="969.92" y="-
|
|
168
|
-
<text text-anchor="start" x="764.5" y="-
|
|
167
|
+
<polygon fill="#efefef" stroke="none" points="617.06,-1402.4 617.06,-1448.4 1246.55,-1448.4 1246.55,-1402.4 617.06,-1402.4"/>
|
|
168
|
+
<polygon fill="none" stroke="black" points="617.06,-1402.4 617.06,-1448.4 1246.55,-1448.4 1246.55,-1402.4 617.06,-1402.4"/>
|
|
169
|
+
<text text-anchor="start" x="800.32" y="-1426.2" font-family="Arial Bold" font-size="18.00">public.robot_nodes</text>
|
|
170
|
+
<text text-anchor="start" x="938.8" y="-1426.2" font-family="Arial" font-size="14.00"> </text>
|
|
171
|
+
<text text-anchor="start" x="969.92" y="-1426.2" font-family="Arial" font-size="14.00" fill="#666666">[BASE TABLE]</text>
|
|
172
|
+
<text text-anchor="start" x="764.5" y="-1411.8" font-family="Arial" font-size="14.00" fill="#333333">Join table connecting robots to nodes (many-to-many)</text>
|
|
173
|
+
<polygon fill="none" stroke="black" points="617.06,-1371.6 617.06,-1402.4 1246.55,-1402.4 1246.55,-1371.6 617.06,-1371.6"/>
|
|
174
|
+
<text text-anchor="start" x="624.06" y="-1383.8" font-family="Arial" font-size="14.00">created_at </text>
|
|
175
|
+
<text text-anchor="start" x="694.11" y="-1383.8" font-family="Arial" font-size="14.00" fill="#666666">[timestamp with time zone]</text>
|
|
169
176
|
<polygon fill="none" stroke="black" points="617.06,-1340.8 617.06,-1371.6 1246.55,-1371.6 1246.55,-1340.8 617.06,-1340.8"/>
|
|
170
|
-
<text text-anchor="start" x="624.06" y="-1353" font-family="Arial" font-size="14.00">
|
|
171
|
-
<text text-anchor="start" x="
|
|
177
|
+
<text text-anchor="start" x="624.06" y="-1353" font-family="Arial" font-size="14.00">deleted_at </text>
|
|
178
|
+
<text text-anchor="start" x="693.34" y="-1353" font-family="Arial" font-size="14.00" fill="#666666">[timestamp with time zone]</text>
|
|
179
|
+
<text text-anchor="start" x="859.07" y="-1353" font-family="Arial" font-size="14.00"> Soft delete timestamp</text>
|
|
172
180
|
<polygon fill="none" stroke="black" points="617.06,-1310 617.06,-1340.8 1246.55,-1340.8 1246.55,-1310 617.06,-1310"/>
|
|
173
181
|
<text text-anchor="start" x="624.06" y="-1322.2" font-family="Arial" font-size="14.00">first_remembered_at </text>
|
|
174
182
|
<text text-anchor="start" x="757.12" y="-1322.2" font-family="Arial" font-size="14.00" fill="#666666">[timestamp with time zone]</text>
|
|
@@ -9,6 +9,7 @@ Join table connecting nodes to tags (many-to-many)
|
|
|
9
9
|
| Name | Type | Default | Nullable | Children | Parents | Comment |
|
|
10
10
|
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
|
|
11
11
|
| created_at | timestamp with time zone | CURRENT_TIMESTAMP | true | | | When this association was created |
|
|
12
|
+
| deleted_at | timestamp with time zone | | true | | | Soft delete timestamp |
|
|
12
13
|
| id | bigint | nextval('node_tags_id_seq'::regclass) | false | | | |
|
|
13
14
|
| node_id | bigint | | false | | [public.nodes](public.nodes.md) | ID of the node being tagged |
|
|
14
15
|
| tag_id | bigint | | false | | [public.tags](public.tags.md) | ID of the tag being applied |
|
|
@@ -25,6 +26,7 @@ Join table connecting nodes to tags (many-to-many)
|
|
|
25
26
|
|
|
26
27
|
| Name | Definition |
|
|
27
28
|
| ---- | ---------- |
|
|
29
|
+
| idx_node_tags_deleted_at | CREATE INDEX idx_node_tags_deleted_at ON public.node_tags USING btree (deleted_at) |
|
|
28
30
|
| idx_node_tags_node_id | CREATE INDEX idx_node_tags_node_id ON public.node_tags USING btree (node_id) |
|
|
29
31
|
| idx_node_tags_tag_id | CREATE INDEX idx_node_tags_tag_id ON public.node_tags USING btree (tag_id) |
|
|
30
32
|
| idx_node_tags_unique | CREATE UNIQUE INDEX idx_node_tags_unique ON public.node_tags USING btree (node_id, tag_id) |
|