smart_brain 0.1.2 → 0.2.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/MEMPAL_GUIDE.md +1074 -0
  4. data/README.en.md +173 -173
  5. data/README.md +467 -173
  6. data/config/brain.yml +69 -1
  7. data/conversation_demo.rb +438 -438
  8. data/db/migrate/002_turn_events_payload.sql +9 -0
  9. data/db/migrate/003_tiers_and_lifecycle.sql +28 -0
  10. data/db/migrate/004_kg_edges.sql +30 -0
  11. data/db/migrate/005_domains_and_memory_scopes.sql +163 -0
  12. data/docs/coding_todo.md +139 -0
  13. data/docs/context_package.md +220 -0
  14. data/docs/evidence_pack.md +190 -0
  15. data/docs/gap_vs_mempal.md +161 -0
  16. data/docs/mcp.md +93 -0
  17. data/docs/memory_types.md +278 -0
  18. data/docs/multi_scope_memory_refactor_plan.md +483 -0
  19. data/docs/multi_scope_migration.md +65 -0
  20. data/docs/policies.md +308 -0
  21. data/docs/retrieval_plan.md +231 -0
  22. data/docs/smartbrain_design.md +299 -0
  23. data/docs/user_guide.md +546 -0
  24. data/example.rb +91 -91
  25. data/examples/01_memory_basic.rb +57 -0
  26. data/examples/02_governance.rb +63 -0
  27. data/examples/03_postgres_persistence.rb +63 -0
  28. data/examples/04_ollama_llm.rb +69 -0
  29. data/examples/05_smart_rag_integration.rb +79 -0
  30. data/examples/06_multi_scope_memory.rb +50 -0
  31. data/examples/README.md +49 -0
  32. data/exe/smart_brain +168 -0
  33. data/lib/smart_brain/adapters/smart_rag/direct_client.rb +16 -5
  34. data/lib/smart_brain/adapters/smart_rag/http_client.rb +16 -5
  35. data/lib/smart_brain/adapters/smart_rag/null_client.rb +7 -2
  36. data/lib/smart_brain/adapters/smart_rag/scope_filter.rb +60 -0
  37. data/lib/smart_brain/configuration.rb +57 -0
  38. data/lib/smart_brain/consolidator/working_summary.rb +80 -12
  39. data/lib/smart_brain/context_composer/composer.rb +40 -3
  40. data/lib/smart_brain/contracts/retrieval_plan.rb +10 -0
  41. data/lib/smart_brain/contracts/scope_context.rb +46 -0
  42. data/lib/smart_brain/contracts/scope_ref.rb +25 -0
  43. data/lib/smart_brain/db.rb +109 -0
  44. data/lib/smart_brain/event_store/in_memory.rb +6 -2
  45. data/lib/smart_brain/event_store/postgres.rb +199 -0
  46. data/lib/smart_brain/fusion/merger.rb +31 -2
  47. data/lib/smart_brain/governance/briefing.rb +146 -0
  48. data/lib/smart_brain/governance/fact_check.rb +110 -0
  49. data/lib/smart_brain/governance/knowledge_graph.rb +60 -0
  50. data/lib/smart_brain/governance/lifecycle.rb +225 -0
  51. data/lib/smart_brain/governance/tiers.rb +60 -0
  52. data/lib/smart_brain/memory_extractor/extractor.rb +25 -7
  53. data/lib/smart_brain/memory_store/in_memory.rb +202 -17
  54. data/lib/smart_brain/memory_store/postgres.rb +500 -0
  55. data/lib/smart_brain/model_provider/base.rb +87 -0
  56. data/lib/smart_brain/model_provider/factory.rb +49 -0
  57. data/lib/smart_brain/model_provider/ollama.rb +60 -0
  58. data/lib/smart_brain/model_provider/openai.rb +60 -0
  59. data/lib/smart_brain/model_provider/stub.rb +26 -0
  60. data/lib/smart_brain/model_provider.rb +7 -0
  61. data/lib/smart_brain/observability/tracker.rb +39 -1
  62. data/lib/smart_brain/retrievers/exact_retriever.rb +6 -0
  63. data/lib/smart_brain/retrievers/memory_retriever.rb +59 -5
  64. data/lib/smart_brain/runtime.rb +288 -16
  65. data/lib/smart_brain/scopes/conflict_resolver.rb +67 -0
  66. data/lib/smart_brain/scopes/registry.rb +133 -0
  67. data/lib/smart_brain/scopes/resolver.rb +32 -0
  68. data/lib/smart_brain/server/http_app.rb +143 -0
  69. data/lib/smart_brain/server/mcp_server.rb +385 -0
  70. data/lib/smart_brain/server/service.rb +129 -0
  71. data/lib/smart_brain/support/levenshtein.rb +35 -0
  72. data/lib/smart_brain/version.rb +5 -5
  73. data/lib/smart_brain.rb +80 -35
  74. metadata +88 -36
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module SmartBrain
4
- VERSION = "0.1.2"
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module SmartBrain
4
+ VERSION = '0.2.0'
5
+ end
data/lib/smart_brain.rb CHANGED
@@ -1,35 +1,80 @@
1
- # frozen_string_literal: true
2
-
3
- require 'time'
4
- require_relative 'smart_brain/version'
5
- require_relative 'smart_brain/configuration'
6
- require_relative 'smart_brain/runtime'
7
-
8
- module SmartBrain
9
- class << self
10
- attr_writer :runtime
11
-
12
- def configure(config_path: nil, smart_rag_client: nil, clock: -> { Time.now.utc })
13
- config = Configuration.load(config_path)
14
- @runtime = Runtime.build(config: config, smart_rag_client: smart_rag_client, clock: clock)
15
- end
16
-
17
- def commit_turn(session_id:, turn_events:)
18
- runtime.commit_turn(session_id: session_id, turn_events: turn_events)
19
- end
20
-
21
- def compose_context(session_id:, user_message:, agent_state: {})
22
- runtime.compose_context(session_id: session_id, user_message: user_message, agent_state: agent_state)
23
- end
24
-
25
- def diagnostics
26
- runtime.diagnostics
27
- end
28
-
29
- private
30
-
31
- def runtime
32
- @runtime ||= Runtime.build(config: Configuration.load, clock: -> { Time.now.utc })
33
- end
34
- end
35
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require_relative 'smart_brain/version'
5
+ require_relative 'smart_brain/configuration'
6
+ require_relative 'smart_brain/runtime'
7
+
8
+ module SmartBrain
9
+ class << self
10
+ attr_writer :runtime
11
+
12
+ def configure(config_path: nil, smart_rag_client: nil, clock: -> { Time.now.utc })
13
+ config = Configuration.load(config_path)
14
+ @runtime = Runtime.build(config: config, smart_rag_client: smart_rag_client, clock: clock)
15
+ end
16
+
17
+ def commit_turn(session_id:, turn_events:, domain_id: nil, scope_context: nil)
18
+ runtime.commit_turn(session_id: session_id, turn_events: turn_events, domain_id: domain_id, scope_context: scope_context)
19
+ end
20
+
21
+ def compose_context(session_id:, user_message:, agent_state: {}, domain_id: nil, scope_context: nil)
22
+ runtime.compose_context(
23
+ session_id: session_id, user_message: user_message, agent_state: agent_state,
24
+ domain_id: domain_id, scope_context: scope_context
25
+ )
26
+ end
27
+
28
+ def search_memory(session_id:, query:, limit: nil, domain_id: nil, scope_context: nil)
29
+ runtime.search_memory(
30
+ session_id: session_id, query: query, limit: limit, domain_id: domain_id, scope_context: scope_context
31
+ )
32
+ end
33
+
34
+ def memory_item(id:)
35
+ runtime.memory_item(id: id)
36
+ end
37
+
38
+ def storage_backend
39
+ runtime.storage_backend
40
+ end
41
+
42
+ def migrate(config_path: nil)
43
+ config = Configuration.load(config_path)
44
+ require_relative 'smart_brain/db'
45
+ SmartBrain::DB.migrate(SmartBrain::DB.connect(config))
46
+ end
47
+
48
+ def distill(...) = runtime.distill(...)
49
+ def gate(...) = runtime.gate(...)
50
+ def promote(...) = runtime.promote(...)
51
+ def demote(...) = runtime.demote(...)
52
+ def retract(...) = runtime.retract(...)
53
+ def promote_to_scope(...) = runtime.promote_to_scope(...)
54
+ def demote_from_scope(...) = runtime.demote_from_scope(...)
55
+ def promotion_lineage(...) = runtime.promotion_lineage(...)
56
+ def knowledge_events(...) = runtime.knowledge_events(...)
57
+
58
+ def kg_add(...) = runtime.kg_add(...)
59
+ def kg_query(...) = runtime.kg_query(...)
60
+ def kg_timeline(...) = runtime.kg_timeline(...)
61
+ def kg_invalidate(...) = runtime.kg_invalidate(...)
62
+ def kg_stats(...) = runtime.kg_stats(...)
63
+
64
+ def fact_check(...) = runtime.fact_check(...)
65
+
66
+ def brief(...) = runtime.brief(...)
67
+ def wake_up(...) = runtime.wake_up(...)
68
+ def resume(...) = runtime.resume(...)
69
+
70
+ def diagnostics
71
+ runtime.diagnostics
72
+ end
73
+
74
+ private
75
+
76
+ def runtime
77
+ @runtime ||= Runtime.build(config: Configuration.load, clock: -> { Time.now.utc })
78
+ end
79
+ end
80
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_brain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SmartBrain Team
@@ -79,6 +79,20 @@ dependencies:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '1.5'
82
+ - !ruby/object:Gem::Dependency
83
+ name: puma
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '7.2'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '7.2'
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: sequel
84
98
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +107,20 @@ dependencies:
93
107
  - - "~>"
94
108
  - !ruby/object:Gem::Version
95
109
  version: '5.87'
110
+ - !ruby/object:Gem::Dependency
111
+ name: sinatra
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '4.2'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '4.2'
96
124
  - !ruby/object:Gem::Dependency
97
125
  name: smart_rag
98
126
  requirement: !ruby/object:Gem::Requirement
@@ -149,20 +177,6 @@ dependencies:
149
177
  - - "~>"
150
178
  - !ruby/object:Gem::Version
151
179
  version: 0.3.2
152
- - !ruby/object:Gem::Dependency
153
- name: puma
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '7.2'
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '7.2'
166
180
  - !ruby/object:Gem::Dependency
167
181
  name: rake
168
182
  requirement: !ruby/object:Gem::Requirement
@@ -205,20 +219,6 @@ dependencies:
205
219
  - - "~>"
206
220
  - !ruby/object:Gem::Version
207
221
  version: '3.13'
208
- - !ruby/object:Gem::Dependency
209
- name: sinatra
210
- requirement: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: '4.2'
215
- type: :development
216
- prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: '4.2'
222
222
  - !ruby/object:Gem::Dependency
223
223
  name: smart_agent
224
224
  requirement: !ruby/object:Gem::Requirement
@@ -233,50 +233,102 @@ dependencies:
233
233
  - - "~>"
234
234
  - !ruby/object:Gem::Version
235
235
  version: 0.2.3
236
- description: SmartBrain provides commit_turn and compose_context APIs for agent memory,
237
- retrieval planning, evidence fusion, and context assembly.
236
+ description: SmartBrain provides scoped agent memory, retrieval planning, evidence
237
+ fusion, governance, and context assembly.
238
238
  email:
239
239
  - team@smartbrain.dev
240
- executables: []
240
+ executables:
241
+ - smart_brain
241
242
  extensions: []
242
243
  extra_rdoc_files: []
243
244
  files:
245
+ - CHANGELOG.md
244
246
  - LICENSE
247
+ - MEMPAL_GUIDE.md
245
248
  - README.en.md
246
249
  - README.md
247
250
  - agents/brain_assistant.rb
248
251
  - config/brain.yml
249
252
  - conversation_demo.rb
250
253
  - db/migrate/001_init.sql
254
+ - db/migrate/002_turn_events_payload.sql
255
+ - db/migrate/003_tiers_and_lifecycle.sql
256
+ - db/migrate/004_kg_edges.sql
257
+ - db/migrate/005_domains_and_memory_scopes.sql
258
+ - docs/coding_todo.md
259
+ - docs/context_package.md
260
+ - docs/evidence_pack.md
261
+ - docs/gap_vs_mempal.md
262
+ - docs/mcp.md
263
+ - docs/memory_types.md
264
+ - docs/multi_scope_memory_refactor_plan.md
265
+ - docs/multi_scope_migration.md
266
+ - docs/policies.md
267
+ - docs/retrieval_plan.md
268
+ - docs/smartbrain_design.md
269
+ - docs/user_guide.md
251
270
  - example.rb
271
+ - examples/01_memory_basic.rb
272
+ - examples/02_governance.rb
273
+ - examples/03_postgres_persistence.rb
274
+ - examples/04_ollama_llm.rb
275
+ - examples/05_smart_rag_integration.rb
276
+ - examples/06_multi_scope_memory.rb
277
+ - examples/README.md
278
+ - exe/smart_brain
252
279
  - lib/smart_brain.rb
253
280
  - lib/smart_brain/adapters/smart_rag/direct_client.rb
254
281
  - lib/smart_brain/adapters/smart_rag/http_client.rb
255
282
  - lib/smart_brain/adapters/smart_rag/null_client.rb
283
+ - lib/smart_brain/adapters/smart_rag/scope_filter.rb
256
284
  - lib/smart_brain/configuration.rb
257
285
  - lib/smart_brain/consolidator/working_summary.rb
258
286
  - lib/smart_brain/context_composer/composer.rb
259
287
  - lib/smart_brain/contracts/context_package.rb
260
288
  - lib/smart_brain/contracts/evidence_pack.rb
261
289
  - lib/smart_brain/contracts/retrieval_plan.rb
290
+ - lib/smart_brain/contracts/scope_context.rb
291
+ - lib/smart_brain/contracts/scope_ref.rb
292
+ - lib/smart_brain/db.rb
262
293
  - lib/smart_brain/event_store/in_memory.rb
294
+ - lib/smart_brain/event_store/postgres.rb
263
295
  - lib/smart_brain/fusion/merger.rb
296
+ - lib/smart_brain/governance/briefing.rb
297
+ - lib/smart_brain/governance/fact_check.rb
298
+ - lib/smart_brain/governance/knowledge_graph.rb
299
+ - lib/smart_brain/governance/lifecycle.rb
300
+ - lib/smart_brain/governance/tiers.rb
264
301
  - lib/smart_brain/memory_extractor/extractor.rb
265
302
  - lib/smart_brain/memory_store/in_memory.rb
303
+ - lib/smart_brain/memory_store/postgres.rb
304
+ - lib/smart_brain/model_provider.rb
305
+ - lib/smart_brain/model_provider/base.rb
306
+ - lib/smart_brain/model_provider/factory.rb
307
+ - lib/smart_brain/model_provider/ollama.rb
308
+ - lib/smart_brain/model_provider/openai.rb
309
+ - lib/smart_brain/model_provider/stub.rb
266
310
  - lib/smart_brain/observability/tracker.rb
267
311
  - lib/smart_brain/retrieval_planner/planner.rb
268
312
  - lib/smart_brain/retrievers/exact_retriever.rb
269
313
  - lib/smart_brain/retrievers/memory_retriever.rb
270
314
  - lib/smart_brain/retrievers/relational_retriever.rb
271
315
  - lib/smart_brain/runtime.rb
316
+ - lib/smart_brain/scopes/conflict_resolver.rb
317
+ - lib/smart_brain/scopes/registry.rb
318
+ - lib/smart_brain/scopes/resolver.rb
319
+ - lib/smart_brain/server/http_app.rb
320
+ - lib/smart_brain/server/mcp_server.rb
321
+ - lib/smart_brain/server/service.rb
322
+ - lib/smart_brain/support/levenshtein.rb
272
323
  - lib/smart_brain/version.rb
273
324
  - templates/brain_assistant.erb
274
325
  - workers/brain_assistant.rb
275
- homepage: https://github.com/smart-ai/smart_brain
326
+ homepage: https://github.com/zhuangbiaowei/smart_brain
276
327
  licenses:
277
328
  - MIT
278
329
  metadata:
279
- source_code_uri: https://github.com/smart-ai/smart_brain
330
+ source_code_uri: https://github.com/zhuangbiaowei/smart_brain
331
+ changelog_uri: https://github.com/zhuangbiaowei/smart_brain/blob/master/CHANGELOG.md
280
332
  rdoc_options: []
281
333
  require_paths:
282
334
  - lib
@@ -284,14 +336,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
284
336
  requirements:
285
337
  - - ">="
286
338
  - !ruby/object:Gem::Version
287
- version: 2.7.0
339
+ version: 3.0.0
288
340
  required_rubygems_version: !ruby/object:Gem::Requirement
289
341
  requirements:
290
342
  - - ">="
291
343
  - !ruby/object:Gem::Version
292
344
  version: '0'
293
345
  requirements: []
294
- rubygems_version: 4.0.3
346
+ rubygems_version: 4.0.13
295
347
  specification_version: 4
296
348
  summary: Agent memory runtime and context composer
297
349
  test_files: []