rasti-ai 3.0.1 → 3.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.features/api-normalization/api-design.md +184 -0
  3. data/.features/api-normalization/overview.md +230 -0
  4. data/AGENTS.md +167 -10
  5. data/README.md +161 -23
  6. data/lib/rasti/ai/anthropic/assistant.rb +1 -11
  7. data/lib/rasti/ai/anthropic/client.rb +6 -28
  8. data/lib/rasti/ai/anthropic/provider.rb +87 -0
  9. data/lib/rasti/ai/assistant.rb +10 -11
  10. data/lib/rasti/ai/client.rb +13 -10
  11. data/lib/rasti/ai/errors.rb +8 -0
  12. data/lib/rasti/ai/gemini/assistant.rb +1 -11
  13. data/lib/rasti/ai/gemini/client.rb +2 -24
  14. data/lib/rasti/ai/gemini/provider.rb +90 -0
  15. data/lib/rasti/ai/huawei_maas/assistant.rb +8 -0
  16. data/lib/rasti/ai/huawei_maas/client.rb +8 -0
  17. data/lib/rasti/ai/huawei_maas/provider.rb +25 -0
  18. data/lib/rasti/ai/huawei_maas/roles.rb +7 -0
  19. data/lib/rasti/ai/open_ai/assistant.rb +0 -4
  20. data/lib/rasti/ai/open_ai/client.rb +4 -26
  21. data/lib/rasti/ai/open_ai/provider.rb +74 -0
  22. data/lib/rasti/ai/open_router/assistant.rb +8 -0
  23. data/lib/rasti/ai/open_router/client.rb +8 -0
  24. data/lib/rasti/ai/open_router/provider.rb +25 -0
  25. data/lib/rasti/ai/open_router/roles.rb +7 -0
  26. data/lib/rasti/ai/provider.rb +197 -0
  27. data/lib/rasti/ai/provider_aware.rb +17 -0
  28. data/lib/rasti/ai/result.rb +11 -0
  29. data/lib/rasti/ai/roles.rb +11 -0
  30. data/lib/rasti/ai/version.rb +1 -1
  31. data/lib/rasti/ai.rb +101 -1
  32. data/spec/anthropic/provider_spec.rb +106 -0
  33. data/spec/gemini/provider_spec.rb +90 -0
  34. data/spec/huawei_maas/assistant_spec.rb +80 -0
  35. data/spec/huawei_maas/client_spec.rb +60 -0
  36. data/spec/minitest_helper.rb +6 -0
  37. data/spec/open_ai/provider_spec.rb +101 -0
  38. data/spec/open_router/assistant_spec.rb +80 -0
  39. data/spec/open_router/client_spec.rb +60 -0
  40. data/spec/rasti_ai_spec.rb +322 -0
  41. data/spec/resources/open_ai/conversation_request.json +1 -0
  42. data/spec/resources/open_ai/system_request.json +1 -0
  43. data/tasks/assistant.rake +5 -3
  44. metadata +39 -2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rasti-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-24 00:00:00.000000000 Z
11
+ date: 2026-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_require
@@ -239,6 +239,8 @@ executables: []
239
239
  extensions: []
240
240
  extra_rdoc_files: []
241
241
  files:
242
+ - ".features/api-normalization/api-design.md"
243
+ - ".features/api-normalization/overview.md"
242
244
  - ".github/workflows/ci.yml"
243
245
  - ".gitignore"
244
246
  - ".ruby-gemset"
@@ -252,6 +254,7 @@ files:
252
254
  - lib/rasti/ai.rb
253
255
  - lib/rasti/ai/anthropic/assistant.rb
254
256
  - lib/rasti/ai/anthropic/client.rb
257
+ - lib/rasti/ai/anthropic/provider.rb
255
258
  - lib/rasti/ai/anthropic/roles.rb
256
259
  - lib/rasti/ai/assistant.rb
257
260
  - lib/rasti/ai/assistant_state.rb
@@ -259,14 +262,28 @@ files:
259
262
  - lib/rasti/ai/errors.rb
260
263
  - lib/rasti/ai/gemini/assistant.rb
261
264
  - lib/rasti/ai/gemini/client.rb
265
+ - lib/rasti/ai/gemini/provider.rb
262
266
  - lib/rasti/ai/gemini/roles.rb
267
+ - lib/rasti/ai/huawei_maas/assistant.rb
268
+ - lib/rasti/ai/huawei_maas/client.rb
269
+ - lib/rasti/ai/huawei_maas/provider.rb
270
+ - lib/rasti/ai/huawei_maas/roles.rb
263
271
  - lib/rasti/ai/mcp/client.rb
264
272
  - lib/rasti/ai/mcp/constants.rb
265
273
  - lib/rasti/ai/mcp/server.rb
266
274
  - lib/rasti/ai/mcp/tools_registry.rb
267
275
  - lib/rasti/ai/open_ai/assistant.rb
268
276
  - lib/rasti/ai/open_ai/client.rb
277
+ - lib/rasti/ai/open_ai/provider.rb
269
278
  - lib/rasti/ai/open_ai/roles.rb
279
+ - lib/rasti/ai/open_router/assistant.rb
280
+ - lib/rasti/ai/open_router/client.rb
281
+ - lib/rasti/ai/open_router/provider.rb
282
+ - lib/rasti/ai/open_router/roles.rb
283
+ - lib/rasti/ai/provider.rb
284
+ - lib/rasti/ai/provider_aware.rb
285
+ - lib/rasti/ai/result.rb
286
+ - lib/rasti/ai/roles.rb
270
287
  - lib/rasti/ai/tool.rb
271
288
  - lib/rasti/ai/tool_serializer.rb
272
289
  - lib/rasti/ai/usage.rb
@@ -275,15 +292,23 @@ files:
275
292
  - rasti-ai.gemspec
276
293
  - spec/anthropic/assistant_spec.rb
277
294
  - spec/anthropic/client_spec.rb
295
+ - spec/anthropic/provider_spec.rb
278
296
  - spec/coverage_helper.rb
279
297
  - spec/gemini/assistant_spec.rb
280
298
  - spec/gemini/client_spec.rb
299
+ - spec/gemini/provider_spec.rb
300
+ - spec/huawei_maas/assistant_spec.rb
301
+ - spec/huawei_maas/client_spec.rb
281
302
  - spec/mcp/client_spec.rb
282
303
  - spec/mcp/server_spec.rb
283
304
  - spec/mcp/tools_registry_spec.rb
284
305
  - spec/minitest_helper.rb
285
306
  - spec/open_ai/assistant_spec.rb
286
307
  - spec/open_ai/client_spec.rb
308
+ - spec/open_ai/provider_spec.rb
309
+ - spec/open_router/assistant_spec.rb
310
+ - spec/open_router/client_spec.rb
311
+ - spec/rasti_ai_spec.rb
287
312
  - spec/resources/anthropic/basic_request.json
288
313
  - spec/resources/anthropic/basic_response.json
289
314
  - spec/resources/anthropic/tool_request.json
@@ -294,6 +319,8 @@ files:
294
319
  - spec/resources/gemini/tool_response.json
295
320
  - spec/resources/open_ai/basic_request.json
296
321
  - spec/resources/open_ai/basic_response.json
322
+ - spec/resources/open_ai/conversation_request.json
323
+ - spec/resources/open_ai/system_request.json
297
324
  - spec/resources/open_ai/tool_request.json
298
325
  - spec/resources/open_ai/tool_response.json
299
326
  - spec/support/helpers/erb.rb
@@ -326,15 +353,23 @@ summary: AI for apps
326
353
  test_files:
327
354
  - spec/anthropic/assistant_spec.rb
328
355
  - spec/anthropic/client_spec.rb
356
+ - spec/anthropic/provider_spec.rb
329
357
  - spec/coverage_helper.rb
330
358
  - spec/gemini/assistant_spec.rb
331
359
  - spec/gemini/client_spec.rb
360
+ - spec/gemini/provider_spec.rb
361
+ - spec/huawei_maas/assistant_spec.rb
362
+ - spec/huawei_maas/client_spec.rb
332
363
  - spec/mcp/client_spec.rb
333
364
  - spec/mcp/server_spec.rb
334
365
  - spec/mcp/tools_registry_spec.rb
335
366
  - spec/minitest_helper.rb
336
367
  - spec/open_ai/assistant_spec.rb
337
368
  - spec/open_ai/client_spec.rb
369
+ - spec/open_ai/provider_spec.rb
370
+ - spec/open_router/assistant_spec.rb
371
+ - spec/open_router/client_spec.rb
372
+ - spec/rasti_ai_spec.rb
338
373
  - spec/resources/anthropic/basic_request.json
339
374
  - spec/resources/anthropic/basic_response.json
340
375
  - spec/resources/anthropic/tool_request.json
@@ -345,6 +380,8 @@ test_files:
345
380
  - spec/resources/gemini/tool_response.json
346
381
  - spec/resources/open_ai/basic_request.json
347
382
  - spec/resources/open_ai/basic_response.json
383
+ - spec/resources/open_ai/conversation_request.json
384
+ - spec/resources/open_ai/system_request.json
348
385
  - spec/resources/open_ai/tool_request.json
349
386
  - spec/resources/open_ai/tool_response.json
350
387
  - spec/support/helpers/erb.rb