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