smart_brain 0.1.2 → 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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/MEMPAL_GUIDE.md +1074 -0
  4. data/README.en.md +206 -173
  5. data/README.md +593 -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/installation.md +198 -0
  17. data/docs/mcp.md +93 -0
  18. data/docs/media_memory_schema.md +271 -0
  19. data/docs/memory_types.md +278 -0
  20. data/docs/multi_scope_memory_refactor_plan.md +483 -0
  21. data/docs/multi_scope_migration.md +65 -0
  22. data/docs/policies.md +308 -0
  23. data/docs/retrieval_plan.md +233 -0
  24. data/docs/smartbrain_design.md +299 -0
  25. data/docs/user_guide.md +547 -0
  26. data/example.rb +91 -91
  27. data/examples/01_memory_basic.rb +57 -0
  28. data/examples/02_governance.rb +63 -0
  29. data/examples/03_postgres_persistence.rb +63 -0
  30. data/examples/04_ollama_llm.rb +69 -0
  31. data/examples/05_smart_rag_integration.rb +79 -0
  32. data/examples/06_multi_scope_memory.rb +50 -0
  33. data/examples/07_media_memory.rb +53 -0
  34. data/examples/README.md +49 -0
  35. data/exe/smart_brain +168 -0
  36. data/lib/smart_brain/adapters/smart_rag/direct_client.rb +57 -5
  37. data/lib/smart_brain/adapters/smart_rag/http_client.rb +118 -5
  38. data/lib/smart_brain/adapters/smart_rag/http_transport.rb +138 -0
  39. data/lib/smart_brain/adapters/smart_rag/media_metadata_extractor.rb +255 -0
  40. data/lib/smart_brain/adapters/smart_rag/null_client.rb +44 -2
  41. data/lib/smart_brain/adapters/smart_rag/scope_filter.rb +60 -0
  42. data/lib/smart_brain/configuration.rb +60 -0
  43. data/lib/smart_brain/consolidator/working_summary.rb +80 -12
  44. data/lib/smart_brain/context_composer/composer.rb +40 -3
  45. data/lib/smart_brain/contracts/retrieval_plan.rb +10 -0
  46. data/lib/smart_brain/contracts/scope_context.rb +46 -0
  47. data/lib/smart_brain/contracts/scope_ref.rb +25 -0
  48. data/lib/smart_brain/db.rb +109 -0
  49. data/lib/smart_brain/event_store/in_memory.rb +6 -2
  50. data/lib/smart_brain/event_store/postgres.rb +199 -0
  51. data/lib/smart_brain/fusion/merger.rb +31 -2
  52. data/lib/smart_brain/governance/briefing.rb +146 -0
  53. data/lib/smart_brain/governance/fact_check.rb +110 -0
  54. data/lib/smart_brain/governance/knowledge_graph.rb +60 -0
  55. data/lib/smart_brain/governance/lifecycle.rb +225 -0
  56. data/lib/smart_brain/governance/tiers.rb +60 -0
  57. data/lib/smart_brain/memory_extractor/extractor.rb +25 -7
  58. data/lib/smart_brain/memory_store/in_memory.rb +202 -17
  59. data/lib/smart_brain/memory_store/postgres.rb +500 -0
  60. data/lib/smart_brain/model_provider/base.rb +87 -0
  61. data/lib/smart_brain/model_provider/factory.rb +49 -0
  62. data/lib/smart_brain/model_provider/ollama.rb +60 -0
  63. data/lib/smart_brain/model_provider/openai.rb +60 -0
  64. data/lib/smart_brain/model_provider/stub.rb +26 -0
  65. data/lib/smart_brain/model_provider.rb +7 -0
  66. data/lib/smart_brain/observability/tracker.rb +39 -1
  67. data/lib/smart_brain/retrievers/exact_retriever.rb +6 -0
  68. data/lib/smart_brain/retrievers/memory_retriever.rb +59 -5
  69. data/lib/smart_brain/runtime.rb +306 -16
  70. data/lib/smart_brain/scopes/conflict_resolver.rb +67 -0
  71. data/lib/smart_brain/scopes/registry.rb +133 -0
  72. data/lib/smart_brain/scopes/resolver.rb +32 -0
  73. data/lib/smart_brain/server/http_app.rb +143 -0
  74. data/lib/smart_brain/server/mcp_server.rb +385 -0
  75. data/lib/smart_brain/server/service.rb +129 -0
  76. data/lib/smart_brain/support/levenshtein.rb +35 -0
  77. data/lib/smart_brain/version.rb +5 -5
  78. data/lib/smart_brain.rb +93 -35
  79. metadata +100 -54
@@ -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.3.0'
5
+ end
data/lib/smart_brain.rb CHANGED
@@ -1,35 +1,93 @@
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
+ resource_filters: {})
23
+ runtime.compose_context(
24
+ session_id: session_id, user_message: user_message, agent_state: agent_state,
25
+ domain_id: domain_id, scope_context: scope_context, resource_filters: resource_filters
26
+ )
27
+ end
28
+
29
+ def add_document(source:, options: {}) = runtime.add_document(source: source, options: options)
30
+ def add_media(source:, options: {}) = runtime.add_media(source: source, options: options)
31
+ def add_image(source:, options: {}) = runtime.add_image(source: source, options: options)
32
+ def add_audio(source:, options: {}) = runtime.add_audio(source: source, options: options)
33
+ def add_video(source:, options: {}) = runtime.add_video(source: source, options: options)
34
+ def enqueue_media(source:, options: {}) = runtime.enqueue_media(source: source, options: options)
35
+ def media_job(job_id:) = runtime.media_job(job_id: job_id)
36
+ def media_jobs(status: nil, limit: 20, offset: 0) = runtime.media_jobs(status: status, limit: limit, offset: offset)
37
+ def cancel_media_job(job_id:) = runtime.cancel_media_job(job_id: job_id)
38
+ def retry_media_job(job_id:) = runtime.retry_media_job(job_id: job_id)
39
+ def media_job_statistics = runtime.media_job_statistics
40
+
41
+ def search_memory(session_id:, query:, limit: nil, domain_id: nil, scope_context: nil)
42
+ runtime.search_memory(
43
+ session_id: session_id, query: query, limit: limit, domain_id: domain_id, scope_context: scope_context
44
+ )
45
+ end
46
+
47
+ def memory_item(id:)
48
+ runtime.memory_item(id: id)
49
+ end
50
+
51
+ def storage_backend
52
+ runtime.storage_backend
53
+ end
54
+
55
+ def migrate(config_path: nil)
56
+ config = Configuration.load(config_path)
57
+ require_relative 'smart_brain/db'
58
+ SmartBrain::DB.migrate(SmartBrain::DB.connect(config))
59
+ end
60
+
61
+ def distill(...) = runtime.distill(...)
62
+ def gate(...) = runtime.gate(...)
63
+ def promote(...) = runtime.promote(...)
64
+ def demote(...) = runtime.demote(...)
65
+ def retract(...) = runtime.retract(...)
66
+ def promote_to_scope(...) = runtime.promote_to_scope(...)
67
+ def demote_from_scope(...) = runtime.demote_from_scope(...)
68
+ def promotion_lineage(...) = runtime.promotion_lineage(...)
69
+ def knowledge_events(...) = runtime.knowledge_events(...)
70
+
71
+ def kg_add(...) = runtime.kg_add(...)
72
+ def kg_query(...) = runtime.kg_query(...)
73
+ def kg_timeline(...) = runtime.kg_timeline(...)
74
+ def kg_invalidate(...) = runtime.kg_invalidate(...)
75
+ def kg_stats(...) = runtime.kg_stats(...)
76
+
77
+ def fact_check(...) = runtime.fact_check(...)
78
+
79
+ def brief(...) = runtime.brief(...)
80
+ def wake_up(...) = runtime.wake_up(...)
81
+ def resume(...) = runtime.resume(...)
82
+
83
+ def diagnostics
84
+ runtime.diagnostics
85
+ end
86
+
87
+ private
88
+
89
+ def runtime
90
+ @runtime ||= Runtime.build(config: Configuration.load, clock: -> { Time.now.utc })
91
+ end
92
+ end
93
+ 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.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SmartBrain Team
@@ -10,75 +10,75 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: dry-struct
13
+ name: faraday
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '1.7'
18
+ version: '2.11'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '1.7'
25
+ version: '2.11'
26
26
  - !ruby/object:Gem::Dependency
27
- name: dry-validation
27
+ name: faraday-multipart
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '1.11'
32
+ version: '1.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.11'
39
+ version: '1.0'
40
40
  - !ruby/object:Gem::Dependency
41
- name: faraday
41
+ name: pg
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '2.11'
46
+ version: '1.5'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '2.11'
53
+ version: '1.5'
54
54
  - !ruby/object:Gem::Dependency
55
- name: oj
55
+ name: puma
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '3.16'
60
+ version: '7.2'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '3.16'
67
+ version: '7.2'
68
68
  - !ruby/object:Gem::Dependency
69
- name: pg
69
+ name: rackup
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '1.5'
74
+ version: '2.1'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '1.5'
81
+ version: '2.1'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: sequel
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -94,19 +94,19 @@ dependencies:
94
94
  - !ruby/object:Gem::Version
95
95
  version: '5.87'
96
96
  - !ruby/object:Gem::Dependency
97
- name: smart_rag
97
+ name: sinatra
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.1'
102
+ version: '4.2'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0.1'
109
+ version: '4.2'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: bundler
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -149,20 +149,6 @@ dependencies:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
151
  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
152
  - !ruby/object:Gem::Dependency
167
153
  name: rake
168
154
  requirement: !ruby/object:Gem::Requirement
@@ -205,20 +191,6 @@ dependencies:
205
191
  - - "~>"
206
192
  - !ruby/object:Gem::Version
207
193
  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
194
  - !ruby/object:Gem::Dependency
223
195
  name: smart_agent
224
196
  requirement: !ruby/object:Gem::Requirement
@@ -233,50 +205,124 @@ dependencies:
233
205
  - - "~>"
234
206
  - !ruby/object:Gem::Version
235
207
  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.
208
+ description: SmartBrain provides scoped agent memory, retrieval planning, evidence
209
+ fusion, governance, and context assembly.
238
210
  email:
239
211
  - team@smartbrain.dev
240
- executables: []
212
+ executables:
213
+ - smart_brain
241
214
  extensions: []
242
215
  extra_rdoc_files: []
243
216
  files:
217
+ - CHANGELOG.md
244
218
  - LICENSE
219
+ - MEMPAL_GUIDE.md
245
220
  - README.en.md
246
221
  - README.md
247
222
  - agents/brain_assistant.rb
248
223
  - config/brain.yml
249
224
  - conversation_demo.rb
250
225
  - db/migrate/001_init.sql
226
+ - db/migrate/002_turn_events_payload.sql
227
+ - db/migrate/003_tiers_and_lifecycle.sql
228
+ - db/migrate/004_kg_edges.sql
229
+ - db/migrate/005_domains_and_memory_scopes.sql
230
+ - docs/coding_todo.md
231
+ - docs/context_package.md
232
+ - docs/evidence_pack.md
233
+ - docs/gap_vs_mempal.md
234
+ - docs/installation.md
235
+ - docs/mcp.md
236
+ - docs/media_memory_schema.md
237
+ - docs/memory_types.md
238
+ - docs/multi_scope_memory_refactor_plan.md
239
+ - docs/multi_scope_migration.md
240
+ - docs/policies.md
241
+ - docs/retrieval_plan.md
242
+ - docs/smartbrain_design.md
243
+ - docs/user_guide.md
251
244
  - example.rb
245
+ - examples/01_memory_basic.rb
246
+ - examples/02_governance.rb
247
+ - examples/03_postgres_persistence.rb
248
+ - examples/04_ollama_llm.rb
249
+ - examples/05_smart_rag_integration.rb
250
+ - examples/06_multi_scope_memory.rb
251
+ - examples/07_media_memory.rb
252
+ - examples/README.md
253
+ - exe/smart_brain
252
254
  - lib/smart_brain.rb
253
255
  - lib/smart_brain/adapters/smart_rag/direct_client.rb
254
256
  - lib/smart_brain/adapters/smart_rag/http_client.rb
257
+ - lib/smart_brain/adapters/smart_rag/http_transport.rb
258
+ - lib/smart_brain/adapters/smart_rag/media_metadata_extractor.rb
255
259
  - lib/smart_brain/adapters/smart_rag/null_client.rb
260
+ - lib/smart_brain/adapters/smart_rag/scope_filter.rb
256
261
  - lib/smart_brain/configuration.rb
257
262
  - lib/smart_brain/consolidator/working_summary.rb
258
263
  - lib/smart_brain/context_composer/composer.rb
259
264
  - lib/smart_brain/contracts/context_package.rb
260
265
  - lib/smart_brain/contracts/evidence_pack.rb
261
266
  - lib/smart_brain/contracts/retrieval_plan.rb
267
+ - lib/smart_brain/contracts/scope_context.rb
268
+ - lib/smart_brain/contracts/scope_ref.rb
269
+ - lib/smart_brain/db.rb
262
270
  - lib/smart_brain/event_store/in_memory.rb
271
+ - lib/smart_brain/event_store/postgres.rb
263
272
  - lib/smart_brain/fusion/merger.rb
273
+ - lib/smart_brain/governance/briefing.rb
274
+ - lib/smart_brain/governance/fact_check.rb
275
+ - lib/smart_brain/governance/knowledge_graph.rb
276
+ - lib/smart_brain/governance/lifecycle.rb
277
+ - lib/smart_brain/governance/tiers.rb
264
278
  - lib/smart_brain/memory_extractor/extractor.rb
265
279
  - lib/smart_brain/memory_store/in_memory.rb
280
+ - lib/smart_brain/memory_store/postgres.rb
281
+ - lib/smart_brain/model_provider.rb
282
+ - lib/smart_brain/model_provider/base.rb
283
+ - lib/smart_brain/model_provider/factory.rb
284
+ - lib/smart_brain/model_provider/ollama.rb
285
+ - lib/smart_brain/model_provider/openai.rb
286
+ - lib/smart_brain/model_provider/stub.rb
266
287
  - lib/smart_brain/observability/tracker.rb
267
288
  - lib/smart_brain/retrieval_planner/planner.rb
268
289
  - lib/smart_brain/retrievers/exact_retriever.rb
269
290
  - lib/smart_brain/retrievers/memory_retriever.rb
270
291
  - lib/smart_brain/retrievers/relational_retriever.rb
271
292
  - lib/smart_brain/runtime.rb
293
+ - lib/smart_brain/scopes/conflict_resolver.rb
294
+ - lib/smart_brain/scopes/registry.rb
295
+ - lib/smart_brain/scopes/resolver.rb
296
+ - lib/smart_brain/server/http_app.rb
297
+ - lib/smart_brain/server/mcp_server.rb
298
+ - lib/smart_brain/server/service.rb
299
+ - lib/smart_brain/support/levenshtein.rb
272
300
  - lib/smart_brain/version.rb
273
301
  - templates/brain_assistant.erb
274
302
  - workers/brain_assistant.rb
275
- homepage: https://github.com/smart-ai/smart_brain
303
+ homepage: https://github.com/zhuangbiaowei/smart_brain
276
304
  licenses:
277
305
  - MIT
278
306
  metadata:
279
- source_code_uri: https://github.com/smart-ai/smart_brain
307
+ source_code_uri: https://github.com/zhuangbiaowei/smart_brain
308
+ changelog_uri: https://github.com/zhuangbiaowei/smart_brain/blob/master/CHANGELOG.md
309
+ documentation_uri: https://github.com/zhuangbiaowei/smart_brain/blob/master/docs/user_guide.md
310
+ post_install_message: |
311
+ SmartBrain 已安装(0.3.0)。默认零外部依赖:memory 后端 + stub LLM。
312
+
313
+ 快速开始:
314
+ smart_brain --version
315
+ smart_brain status
316
+ ruby -e "require 'smart_brain'; SmartBrain.configure; p SmartBrain.compose_context(session_id: 's', user_message: '你好')"
317
+
318
+ 常用配置(环境变量):
319
+ SMARTBRAIN_BACKEND=postgres # 持久化(需先建库,或 smart_brain migrate)
320
+ SMARTBRAIN_DB_NAME=smart_brain_development # 其余 SMARTBRAIN_DB_{HOST,PORT,USER,PASSWORD}
321
+ SMARTBRAIN_LLM_PROVIDER=ollama # 真 LLM 摘要/重排(需本地 ollama + 生成式模型如 qwen3/llama2)
322
+ SMARTBRAIN_LLM_BASE_URL / SMARTBRAIN_LLM_API_KEY / SMARTBRAIN_LLM_MODEL
323
+
324
+ 资源 RAG(可选):gem install smart_rag,再用 SmartBrain::Adapters::SmartRag::DirectClient / HttpClient。
325
+ 详见 README 与 docs/user_guide.md、docs/installation.md。
280
326
  rdoc_options: []
281
327
  require_paths:
282
328
  - lib
@@ -284,14 +330,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
284
330
  requirements:
285
331
  - - ">="
286
332
  - !ruby/object:Gem::Version
287
- version: 2.7.0
333
+ version: 3.0.0
288
334
  required_rubygems_version: !ruby/object:Gem::Requirement
289
335
  requirements:
290
336
  - - ">="
291
337
  - !ruby/object:Gem::Version
292
338
  version: '0'
293
339
  requirements: []
294
- rubygems_version: 4.0.3
340
+ rubygems_version: 4.0.16
295
341
  specification_version: 4
296
342
  summary: Agent memory runtime and context composer
297
343
  test_files: []