sorbet-baml 0.2.0 → 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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +123 -2
  3. data/Rakefile +2 -2
  4. data/docs-site/.gitignore +48 -0
  5. data/docs-site/Gemfile +5 -0
  6. data/docs-site/Gemfile.lock +140 -0
  7. data/docs-site/Rakefile +3 -0
  8. data/docs-site/bridgetown.config.yml +15 -0
  9. data/docs-site/config/initializers.rb +9 -0
  10. data/docs-site/config/puma.rb +9 -0
  11. data/docs-site/config.ru +5 -0
  12. data/docs-site/esbuild.config.js +11 -0
  13. data/docs-site/frontend/javascript/index.js +22 -0
  14. data/docs-site/frontend/styles/index.css +61 -0
  15. data/docs-site/package.json +18 -0
  16. data/docs-site/postcss.config.js +6 -0
  17. data/docs-site/server/roda_app.rb +9 -0
  18. data/docs-site/src/_components/head.liquid +26 -0
  19. data/docs-site/src/_components/nav.liquid +68 -0
  20. data/docs-site/src/_layouts/default.liquid +27 -0
  21. data/docs-site/src/_layouts/doc.liquid +39 -0
  22. data/docs-site/src/advanced-usage.md +598 -0
  23. data/docs-site/src/getting-started.md +170 -0
  24. data/docs-site/src/index.md +183 -0
  25. data/docs-site/src/troubleshooting.md +317 -0
  26. data/docs-site/src/type-mapping.md +236 -0
  27. data/docs-site/tailwind.config.js +85 -0
  28. data/examples/description_parameters.rb +16 -16
  29. data/lib/sorbet_baml/comment_extractor.rb +31 -39
  30. data/lib/sorbet_baml/converter.rb +66 -32
  31. data/lib/sorbet_baml/dependency_resolver.rb +11 -11
  32. data/lib/sorbet_baml/description_extension.rb +5 -5
  33. data/lib/sorbet_baml/description_extractor.rb +8 -10
  34. data/lib/sorbet_baml/dspy_tool_converter.rb +97 -0
  35. data/lib/sorbet_baml/dspy_tool_extensions.rb +23 -0
  36. data/lib/sorbet_baml/enum_extensions.rb +2 -2
  37. data/lib/sorbet_baml/struct_extensions.rb +2 -2
  38. data/lib/sorbet_baml/tool_extensions.rb +23 -0
  39. data/lib/sorbet_baml/type_mapper.rb +35 -37
  40. data/lib/sorbet_baml/version.rb +1 -1
  41. data/lib/sorbet_baml.rb +41 -13
  42. data/sorbet/config +2 -0
  43. data/sorbet/rbi/gems/anthropic@1.5.0.rbi +21252 -0
  44. data/sorbet/rbi/gems/async@2.27.3.rbi +9 -0
  45. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +9 -0
  46. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +424 -0
  47. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  48. data/sorbet/rbi/gems/console@1.33.0.rbi +9 -0
  49. data/sorbet/rbi/gems/dry-configurable@1.3.0.rbi +672 -0
  50. data/sorbet/rbi/gems/dry-core@1.1.0.rbi +1729 -0
  51. data/sorbet/rbi/gems/dry-logger@1.1.0.rbi +1317 -0
  52. data/sorbet/rbi/gems/dspy@0.19.1.rbi +6677 -0
  53. data/sorbet/rbi/gems/ffi@1.17.2.rbi +2174 -0
  54. data/sorbet/rbi/gems/fiber-annotation@0.2.0.rbi +9 -0
  55. data/sorbet/rbi/gems/fiber-local@1.1.0.rbi +9 -0
  56. data/sorbet/rbi/gems/fiber-storage@1.0.1.rbi +9 -0
  57. data/sorbet/rbi/gems/google-protobuf@4.32.0.rbi +9 -0
  58. data/sorbet/rbi/gems/googleapis-common-protos-types@1.20.0.rbi +9 -0
  59. data/sorbet/rbi/gems/informers@1.2.1.rbi +1875 -0
  60. data/sorbet/rbi/gems/io-event@1.12.1.rbi +9 -0
  61. data/sorbet/rbi/gems/metrics@0.13.0.rbi +9 -0
  62. data/sorbet/rbi/gems/onnxruntime@0.10.0.rbi +304 -0
  63. data/sorbet/rbi/gems/openai@0.16.0.rbi +68055 -0
  64. data/sorbet/rbi/gems/opentelemetry-api@1.6.0.rbi +9 -0
  65. data/sorbet/rbi/gems/opentelemetry-common@0.22.0.rbi +9 -0
  66. data/sorbet/rbi/gems/opentelemetry-exporter-otlp@0.30.0.rbi +9 -0
  67. data/sorbet/rbi/gems/opentelemetry-registry@0.4.0.rbi +9 -0
  68. data/sorbet/rbi/gems/opentelemetry-sdk@1.8.1.rbi +9 -0
  69. data/sorbet/rbi/gems/opentelemetry-semantic_conventions@1.11.0.rbi +9 -0
  70. data/sorbet/rbi/gems/polars-df@0.20.0.rbi +9 -0
  71. data/sorbet/rbi/gems/sorbet-result@1.4.0.rbi +242 -0
  72. data/sorbet/rbi/gems/sorbet-schema@0.9.2.rbi +743 -0
  73. data/sorbet/rbi/gems/sorbet-struct-comparable@1.3.0.rbi +48 -0
  74. data/sorbet/rbi/gems/tokenizers@0.5.5.rbi +754 -0
  75. data/sorbet/rbi/gems/traces@0.17.0.rbi +9 -0
  76. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +1429 -0
  77. metadata +63 -2
data/lib/sorbet_baml.rb CHANGED
@@ -1,35 +1,63 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- require "sorbet-runtime"
5
- require_relative "sorbet_baml/version"
6
- require_relative "sorbet_baml/converter"
7
- require_relative "sorbet_baml/type_mapper"
8
- require_relative "sorbet_baml/dependency_resolver"
9
- require_relative "sorbet_baml/comment_extractor"
10
- require_relative "sorbet_baml/description_extractor"
11
- require_relative "sorbet_baml/description_extension"
12
- require_relative "sorbet_baml/struct_extensions"
13
- require_relative "sorbet_baml/enum_extensions"
4
+ require 'sorbet-runtime'
5
+ require_relative 'sorbet_baml/version'
6
+ require_relative 'sorbet_baml/converter'
7
+ require_relative 'sorbet_baml/type_mapper'
8
+ require_relative 'sorbet_baml/dependency_resolver'
9
+ require_relative 'sorbet_baml/comment_extractor'
10
+ require_relative 'sorbet_baml/description_extractor'
11
+ require_relative 'sorbet_baml/description_extension'
12
+ require_relative 'sorbet_baml/struct_extensions'
13
+ require_relative 'sorbet_baml/enum_extensions'
14
+ require_relative 'sorbet_baml/tool_extensions'
15
+
16
+ # Optional DSPy support
17
+ begin
18
+ require 'dspy'
19
+ require_relative 'sorbet_baml/dspy_tool_converter'
20
+ require_relative 'sorbet_baml/dspy_tool_extensions'
21
+ rescue LoadError
22
+ # DSPy not available, skip DSPy tool support
23
+ end
14
24
 
15
25
  module SorbetBaml
16
26
  class Error < StandardError; end
17
-
27
+
18
28
  extend T::Sig
19
-
29
+
20
30
  # Convert a single T::Struct to BAML definition
21
31
  sig { params(klass: T.class_of(T::Struct), options: T::Hash[Symbol, T.untyped]).returns(String) }
22
32
  def self.from_struct(klass, options = {})
23
33
  Converter.from_struct(klass, options)
24
34
  end
25
-
35
+
26
36
  # Convert multiple T::Structs to BAML definitions
27
37
  sig { params(klasses: T::Array[T.class_of(T::Struct)], options: T::Hash[Symbol, T.untyped]).returns(String) }
28
38
  def self.from_structs(klasses, options = {})
29
39
  Converter.from_structs(klasses, options)
30
40
  end
41
+
42
+ # Convert a single T::Struct to BAML tool definition
43
+ sig { params(klass: T.class_of(T::Struct), options: T::Hash[Symbol, T.untyped]).returns(String) }
44
+ def self.from_tool(klass, options = {})
45
+ Converter.from_tool(klass, options)
46
+ end
47
+
48
+ # Convert a DSPy tool to BAML tool definition (only if DSPy is available)
49
+ if defined?(DSPy::Tools::Base)
50
+ sig { params(klass: T.class_of(DSPy::Tools::Base), options: T::Hash[Symbol, T.untyped]).returns(String) }
51
+ def self.from_dspy_tool(klass, options = {})
52
+ DSPyToolConverter.from_dspy_tool(klass, options)
53
+ end
54
+ end
31
55
  end
32
56
 
33
57
  # Extend T::Struct and T::Enum with BAML conversion methods
34
58
  T::Struct.extend(SorbetBaml::StructExtensions)
59
+ T::Struct.extend(SorbetBaml::ToolExtensions)
35
60
  T::Enum.extend(SorbetBaml::EnumExtensions)
61
+
62
+ # Extend DSPy::Tools::Base with BAML conversion methods if DSPy is available
63
+ DSPy::Tools::Base.extend(SorbetBaml::DSPyToolExtensions) if defined?(DSPy::Tools::Base)
data/sorbet/config CHANGED
@@ -2,3 +2,5 @@
2
2
  .
3
3
  --ignore=tmp/
4
4
  --ignore=vendor/
5
+ --ignore=docs-site/
6
+ --ignore=docs-output/