scout-ai 1.2.5 → 2.0.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/.vimproject +111 -31
  3. data/README.md +171 -320
  4. data/Rakefile +17 -1
  5. data/VERSION +1 -1
  6. data/doc/Improvements.md +325 -0
  7. data/doc/StartHere.md +110 -0
  8. data/doc/developer/Architecture.md +126 -0
  9. data/doc/developer/Backends.md +199 -0
  10. data/doc/developer/ChatLifecycle.md +183 -0
  11. data/doc/developer/DelegationInternals.md +295 -0
  12. data/doc/developer/DesignPrinciples.md +245 -0
  13. data/doc/developer/PromptProcessing.md +292 -0
  14. data/doc/developer/Provenance.md +317 -0
  15. data/doc/user/BuildingAgents.md +345 -0
  16. data/doc/user/Cookbook.md +333 -0
  17. data/doc/user/CoreConcepts.md +181 -0
  18. data/doc/user/Delegation.md +191 -0
  19. data/doc/user/GettingStarted.md +159 -0
  20. data/doc/user/ManagingContext.md +163 -0
  21. data/doc/user/MultiAgentWorkflows.md +256 -0
  22. data/doc/user/Python.md +159 -0
  23. data/doc/user/RunningInference.md +200 -0
  24. data/doc/user/ToolCalling.md +193 -0
  25. data/doc/user/WritingChats.md +197 -0
  26. data/lib/scout/llm/agent/chat.rb +62 -12
  27. data/lib/scout/llm/agent/delegate.rb +274 -65
  28. data/lib/scout/llm/agent/iterate.rb +2 -2
  29. data/lib/scout/llm/agent/save.rb +273 -0
  30. data/lib/scout/llm/agent/workflow.rb +164 -0
  31. data/lib/scout/llm/agent.rb +86 -61
  32. data/lib/scout/llm/ask.rb +36 -6
  33. data/lib/scout/llm/backends/anthropic.rb +9 -1
  34. data/lib/scout/llm/backends/bedrock.rb +15 -3
  35. data/lib/scout/llm/backends/default.rb +129 -89
  36. data/lib/scout/llm/backends/glm.rb +58 -0
  37. data/lib/scout/llm/backends/huggingface.rb +13 -1
  38. data/lib/scout/llm/backends/ollama.rb +13 -0
  39. data/lib/scout/llm/backends/openwebui.rb +8 -3
  40. data/lib/scout/llm/chat/agent_meta.rb +264 -0
  41. data/lib/scout/llm/chat/annotation.rb +37 -14
  42. data/lib/scout/llm/chat/parse.rb +28 -6
  43. data/lib/scout/llm/chat/persist.rb +25 -0
  44. data/lib/scout/llm/chat/process/clear.rb +19 -1
  45. data/lib/scout/llm/chat/process/files.rb +16 -1
  46. data/lib/scout/llm/chat/process/meta.rb +422 -32
  47. data/lib/scout/llm/chat/process/options.rb +21 -1
  48. data/lib/scout/llm/chat/process/tools.rb +49 -12
  49. data/lib/scout/llm/chat/process.rb +4 -0
  50. data/lib/scout/llm/chat/prompt/shorten_tools.rb +125 -0
  51. data/lib/scout/llm/chat/prompt/shorten_tools_epoch.rb +365 -0
  52. data/lib/scout/llm/chat/prompt.rb +48 -0
  53. data/lib/scout/llm/chat/provenance.rb +775 -0
  54. data/lib/scout/llm/chat/tool_calls.rb +76 -0
  55. data/lib/scout/llm/chat.rb +18 -2
  56. data/lib/scout/llm/embed.rb +8 -3
  57. data/lib/scout/llm/image.rb +86 -0
  58. data/lib/scout/llm/rag.rb +3 -3
  59. data/lib/scout/llm/tools/call.rb +159 -10
  60. data/lib/scout/llm/tools/knowledge_base.rb +1 -1
  61. data/lib/scout/llm/tools/workflow.rb +13 -5
  62. data/lib/scout-ai.rb +1 -0
  63. data/research/ChatAnalyst-required-changes.md +167 -0
  64. data/research/agent-delegation-analysis.md +810 -0
  65. data/research/agent-meta-provenance-integration-plan.md +622 -0
  66. data/research/agent-workflow-analysis.md +1120 -0
  67. data/research/backends-analysis.md +836 -0
  68. data/research/chat-core-analysis.md +946 -0
  69. data/research/chatanalyst-provenance/00-baseline.md +30 -0
  70. data/research/chatanalyst-provenance/01-repo-map.md +60 -0
  71. data/research/chatanalyst-provenance/02-event-reconstruction.md +55 -0
  72. data/research/chatanalyst-provenance/03-duplication-evidence.md +45 -0
  73. data/research/chatanalyst-provenance/04-tooling-root-cause.md +57 -0
  74. data/research/chatanalyst-provenance/05-fix-plan.md +46 -0
  75. data/research/chatanalyst-provenance/07-critic-review.md +25 -0
  76. data/research/chatanalyst-provenance/final-report.md +45 -0
  77. data/research/chatanalyst-provenance/resumption.md +37 -0
  78. data/research/coding-philosophy-analysis.md +928 -0
  79. data/research/commands-analysis.md +947 -0
  80. data/research/multi-agent-patterns-analysis.md +853 -0
  81. data/research/prompt-strategies-analysis.md +630 -0
  82. data/research/prov-verbosity-fix-notes.md +77 -0
  83. data/research/provenance-analysis.md +469 -0
  84. data/research/provenance-navigation-design.md +640 -0
  85. data/research/synthesis-report.md +487 -0
  86. data/research/tools-system-analysis.md +779 -0
  87. data/scout-ai.gemspec +97 -13
  88. data/scout_commands/agent/ask +13 -3
  89. data/scout_commands/agent/kb +2 -0
  90. data/scout_commands/llm/ask +11 -4
  91. data/scout_commands/llm/md +76 -0
  92. data/scout_commands/llm/prov +602 -0
  93. data/scout_commands/llm/word +71 -0
  94. data/share/word/reference.docx +0 -0
  95. data/test/etc/AI/mock.yaml +11 -0
  96. data/test/fixtures/backends/anthropic.json +19 -0
  97. data/test/fixtures/backends/anthropic_tool_use.json +24 -0
  98. data/test/fixtures/backends/bedrock.json +8 -0
  99. data/test/fixtures/backends/bedrock_embedding.json +3 -0
  100. data/test/fixtures/backends/bedrock_tool_use.json +17 -0
  101. data/test/fixtures/backends/ollama.json +16 -0
  102. data/test/fixtures/backends/ollama_tool_call.json +27 -0
  103. data/test/fixtures/backends/openai_chat.json +21 -0
  104. data/test/fixtures/backends/openai_chat_tool_call.json +31 -0
  105. data/test/fixtures/backends/responses.json +33 -0
  106. data/test/fixtures/backends/responses_tool_call.json +28 -0
  107. data/test/integration/README.md +32 -0
  108. data/test/integration/scout/llm/backends/test_endpoints.rb +34 -0
  109. data/test/integration/scout/llm/backends/test_openwebui.rb +61 -0
  110. data/test/integration/scout/llm/backends/test_relay.rb +52 -0
  111. data/test/integration/scout/llm/test_infrastructure.rb +74 -0
  112. data/test/{scout → integration/scout}/llm/test_mcp.rb +1 -1
  113. data/test/integration/scout/llm/tools/test_mcp.rb +42 -0
  114. data/test/integration/scout/model/test_base.rb +91 -0
  115. data/test/scout/llm/agent/test_chat.rb +8 -2
  116. data/test/scout/llm/agent/test_save.rb +413 -0
  117. data/test/scout/llm/agent/test_workflow.rb +110 -0
  118. data/test/scout/llm/backends/test_anthropic.rb +93 -10
  119. data/test/scout/llm/backends/test_bedrock.rb +118 -2
  120. data/test/scout/llm/backends/test_ollama.rb +70 -20
  121. data/test/scout/llm/backends/test_openwebui.rb +42 -40
  122. data/test/scout/llm/backends/test_relay.rb +4 -2
  123. data/test/scout/llm/chat/agent_meta_fixtures.rb +131 -0
  124. data/test/scout/llm/chat/process/test_meta.rb +518 -0
  125. data/test/scout/llm/chat/process/test_normalize_usage.rb +183 -0
  126. data/test/scout/llm/chat/test_agent_meta.rb +357 -0
  127. data/test/scout/llm/chat/test_agent_meta_provenance.rb +467 -0
  128. data/test/scout/llm/chat/test_agent_meta_tokens.rb +594 -0
  129. data/test/scout/llm/chat/test_parse.rb +70 -15
  130. data/test/scout/llm/chat/test_prov_cli.rb +274 -0
  131. data/test/scout/llm/chat/test_provenance.rb +240 -0
  132. data/test/scout/llm/chat/test_tool_calls.rb +38 -0
  133. data/test/scout/llm/test_agent.rb +13 -36
  134. data/test/scout/llm/test_ask.rb +75 -52
  135. data/test/scout/llm/test_chat.rb +107 -13
  136. data/test/scout/llm/test_embed.rb +48 -0
  137. data/test/scout/llm/test_rag.rb +23 -16
  138. data/test/scout/llm/test_tools.rb +12 -1
  139. data/test/scout/llm/tools/test_knowledge_base.rb +0 -1
  140. data/test/scout/llm/tools/test_mcp.rb +5 -3
  141. data/test/scout/llm/tools/test_workflow.rb +23 -2
  142. data/test/scout/model/python/huggingface/causal/test_next_token.rb +11 -5
  143. data/test/scout/model/python/huggingface/test_causal.rb +9 -3
  144. data/test/scout/model/python/huggingface/test_classification.rb +11 -2
  145. data/test/scout/model/python/test_torch.rb +2 -0
  146. data/test/scout/model/python/torch/test_helpers.rb +4 -0
  147. data/test/scout/model/test_base.rb +4 -2
  148. data/test/support/availability.rb +231 -0
  149. data/test/support/fake_clients.rb +138 -0
  150. data/test/support/fixtures.rb +21 -0
  151. data/test/support/infrastructure_probes.rb +136 -0
  152. data/test/support/mock_backend.rb +215 -0
  153. data/test/test_helper.rb +32 -2
  154. metadata +96 -12
  155. data/doc/Agent.md +0 -354
  156. data/doc/Chat.md +0 -481
  157. data/doc/LLM.md +0 -356
  158. data/doc/PythonAgentTasks.md +0 -333
  159. data/doc/RAG.md +0 -129
  160. data/doc/USER_GUIDE.md +0 -572
  161. data/scout_commands/documenter +0 -148
  162. data/test/scout/llm/backends/test_openai.rb +0 -192
  163. data/test/scout/llm/backends/test_responses.rb +0 -238
  164. data/test/scout/llm/test_parse.rb +0 -98
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 742a8e82560504d53d300b55cbd7ea21f3d982cf07ff46ec168554f5c4b4ee09
4
- data.tar.gz: 30fe40bbc93cf1e163ca1cd200e3343015bbfb3cccae47809c49543ea887dca9
3
+ metadata.gz: 6bf72e55ea7c1691cb13a5c2780e22d36d48fa36435804d3060f22b60bf98751
4
+ data.tar.gz: 45b25598880785543bd7d1e955d024e430296de513ad17983272cc9bb81312d6
5
5
  SHA512:
6
- metadata.gz: b0125103d3908fca79bef75d8855f385069d795c9c43cac21556b1a5aa3b03fe2c3f0022ded325df97006f0b1248869796fc51a226a60ef4b5e68fd126a67282
7
- data.tar.gz: 05ed5d8a131d6ad65abd05b50eeda6b9d39686e77f417bc8690554ecb6ed4abd4c5229deba592ce7d0114a78985ba17ed73958164b8f6cbb3cea60ad71cc54f4
6
+ metadata.gz: c409ce5d5a7fed4b9a04e4590afa0d66b5ead6396ae767a666238bcd0cde6c473e97dfae836285bf7a337c2206a71cbb42d0eafd582678e6b3ebf9259c225221
7
+ data.tar.gz: 0ab6fc73d7e3903c9194bfa793baa750641f414d1fc1b4aca6928425e3a7204f9871fa8f91b172fce1550a29002080b5ad3562cb80a447edf99f980d8a96a5bd
data/.vimproject CHANGED
@@ -27,7 +27,11 @@ scout-ai=$PWD filter="*.rb *.rake Rakefile *.rdoc *.R *.sh *.js *.haml *.sass *.
27
27
 
28
28
  save_reponse
29
29
 
30
+ tokens
31
+ patch
30
32
  relay
33
+
34
+ cpus.rb
31
35
  }
32
36
  web=web{
33
37
  chat
@@ -57,11 +61,7 @@ scout-ai=$PWD filter="*.rb *.rake Rakefile *.rdoc *.R *.sh *.js *.haml *.sass *.
57
61
  }
58
62
  }
59
63
  }
60
-
61
- huggingface
62
-
63
- test_huggingface
64
-
64
+ save_locations
65
65
  }
66
66
  lib=lib {
67
67
  scout-ai.rb
@@ -72,56 +72,61 @@ scout-ai=$PWD filter="*.rb *.rake Rakefile *.rdoc *.R *.sh *.js *.haml *.sass *.
72
72
  entity.rb
73
73
  }
74
74
  llm=llm{
75
+ ask.rb
76
+ embed.rb
77
+ image.rb
78
+ mcp.rb
79
+ rag.rb
75
80
  utils.rb
76
81
  chat.rb
77
82
  chat=chat{
78
83
  annotation.rb
79
84
  parse.rb
85
+ persist.rb
80
86
  process.rb
87
+ provenance.rb
88
+ tool_calls.rb
89
+ prompt.rb
90
+ prompt=prompt{
91
+ shorten_tools.rb
92
+ shorten_tools_epoch.rb
93
+ }
81
94
  process=process{
82
- tools.rb
83
- files.rb
84
95
  clear.rb
85
- options.rb
96
+ files.rb
86
97
  meta.rb
98
+ options.rb
99
+ tools.rb
87
100
  }
88
101
  }
89
102
  tools.rb
90
103
  tools=tools{
104
+ call.rb
105
+ knowledge_base.rb
91
106
  mcp.rb
92
107
  workflow.rb
93
- knowledge_base.rb
94
- call.rb
95
108
  }
96
-
97
109
  backends=backends{
98
110
  default.rb
99
111
 
100
- responses.rb
101
- openai.rb
102
- ollama.rb
112
+ glm.rb
103
113
  anthropic.rb
104
- vllm.rb
114
+ bedrock.rb
105
115
  huggingface.rb
116
+ ollama.rb
117
+ openai.rb
106
118
  openwebui.rb
107
-
108
- bedrock.rb
109
119
  relay.rb
120
+ responses.rb
121
+ vllm.rb
110
122
  }
111
-
112
- ask.rb
113
-
114
- embed.rb
115
-
116
- rag.rb
117
-
118
- mcp.rb
119
-
120
123
  agent.rb
121
124
  agent=agent{
122
125
  chat.rb
123
- iterate.rb
124
126
  delegate.rb
127
+ iterate.rb
128
+ save.rb
129
+ workflow.rb
125
130
  }
126
131
  }
127
132
  model=model{
@@ -180,10 +185,44 @@ scout-ai=$PWD filter="*.rb *.rake Rakefile *.rdoc *.R *.sh *.js *.haml *.sass *.
180
185
  }
181
186
  }
182
187
  doc=doc filter="*"{
183
- Agent.md
184
- Chat.md
185
- LLM.md
186
188
  Model.md
189
+ Improvements.md
190
+ StartHere.md
191
+ user=user{
192
+ BuildingAgents.md
193
+ Cookbook.md
194
+ CoreConcepts.md
195
+ Delegation.md
196
+ GettingStarted.md
197
+ ManagingContext.md
198
+ MultiAgentWorkflows.md
199
+ Python.md
200
+ RunningInference.md
201
+ ToolCalling.md
202
+ WritingChats.md
203
+ }
204
+ developer=developer{
205
+ Architecture.md
206
+ Backends.md
207
+ ChatLifecycle.md
208
+ DelegationInternals.md
209
+ DesignPrinciples.md
210
+ PromptProcessing.md
211
+ Provenance.md
212
+ }
213
+ }
214
+ research=research filter="*"{
215
+ agent-delegation-analysis.md
216
+ agent-workflow-analysis.md
217
+ backends-analysis.md
218
+ chat-core-analysis.md
219
+ coding-philosophy-analysis.md
220
+ commands-analysis.md
221
+ multi-agent-patterns-analysis.md
222
+ prompt-strategies-analysis.md
223
+ provenance-analysis.md
224
+ synthesis-report.md
225
+ tools-system-analysis.md
187
226
  }
188
227
  test=test {
189
228
  data=data filter="*"{
@@ -194,13 +233,50 @@ scout-ai=$PWD filter="*.rb *.rake Rakefile *.rdoc *.R *.sh *.js *.haml *.sass *.
194
233
  parents
195
234
  }
196
235
  }
236
+ scout=scout{
237
+ llm=llm{
238
+ test_agent.rb
239
+ test_ask.rb
240
+ test_chat.rb
241
+ test_embed.rb
242
+ test_mcp.rb
243
+ test_parse.rb
244
+ test_rag.rb
245
+ test_tools.rb
246
+ test_utils.rb
247
+ chat=chat{
248
+ test_parse.rb
249
+ test_process.rb
250
+ process=process{
251
+ test_meta.rb
252
+ test_normalize_usage.rb
253
+ }
254
+ }
255
+ backends=backends{
256
+ test_anthropic.rb
257
+ test_bedrock.rb
258
+ test_huggingface.rb
259
+ test_ollama.rb
260
+ test_openai.rb
261
+ test_openwebui.rb
262
+ test_relay.rb
263
+ test_responses.rb
264
+ }
265
+ }
266
+ }
267
+ support=support{
268
+ availability.rb
269
+ fake_clients.rb
270
+ fixtures.rb
271
+ infrastructure_probes.rb
272
+ mock_backend.rb
273
+ }
197
274
  test_helper.rb
198
275
  }
199
276
  bin=bin filter="*"{
200
277
  scout-ai
201
278
  }
202
279
  scout_commands=scout_commands filter="*"{
203
- documenter
204
280
  llm=llm{
205
281
  ask
206
282
  json
@@ -208,6 +284,10 @@ scout-ai=$PWD filter="*.rb *.rake Rakefile *.rdoc *.R *.sh *.js *.haml *.sass *.
208
284
  process
209
285
  process_queries
210
286
  server
287
+ word
288
+ md
289
+ info
290
+ prov
211
291
  }
212
292
  agent=agent{
213
293
  ask