foobara-llm-backed-command 0.0.1 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35b413814f3efa8d25f40271f27299de89f7ace8e07dae5c0aecb819c7d1d072
4
- data.tar.gz: 9305db00b446bce836d084ccee817744ef116d815d86c04b7871d2ead7358bb8
3
+ metadata.gz: b9cb07021ef2c77ed1e05d97c0d4b5cfaddca33c909c704fe3af57beddc5b2c4
4
+ data.tar.gz: c8da8cc8464a78c6ed709bd466de6bd55dab9ce371cdd7744aa8a875281726eb
5
5
  SHA512:
6
- metadata.gz: c045cb2e231317053aed1e0d2160fc8a189c85a4580c5af65a30f0e0fbaadbc157081fc6e73549fe9618933ea73d5ab8a6f20a06f84ca28dc2ff1b9f8805e946
7
- data.tar.gz: e3b40eedd0187cf85777d5db7b1cdec2348ee0f6540a7d10e71cb0e2e88f760ca8ae87c0ce7bc2507c1917cc15d4e6f736e15fc4058e599145cc202310a6813f
6
+ metadata.gz: 5ee46b5b1f6d5a45d2b1bff8781256a1e63f0df734c5a1473ab0eb348d89c6ef3b9352892bc88f1bc5e0a637e68ce9321ac49fecd2b4448d32d2495d407f2a8b
7
+ data.tar.gz: 598341d453c7b9e6b17d0d7c5d09a34212f4ff697e7d91780eb0cc3ac3428134be890722c85189bc8f0d35ecb6feaf3bc5cf770405aaf88dd33795406f9d49da
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [0.0.3] - 2025-03-05
2
+
3
+ - Support answers with an explanation followed by the proper answer in fence posts
4
+
5
+ ## [0.0.2] - 2025-03-05
6
+
7
+ - Strip <think> blocks out of answers
8
+
1
9
  ## [0.0.1] - 2025-03-05
2
10
 
3
11
  - Release as a gem
@@ -71,8 +71,29 @@ module Foobara
71
71
  end
72
72
 
73
73
  def parse_answer
74
+ stripped_answer = answer.gsub(/<THINK>.*?<\/THINK>/mi, "")
75
+ fencepostless_answer = stripped_answer.gsub(/^\s*```\w*\n(.*)```\s*\z/m, "\\1")
74
76
  # TODO: should we verify against json-schema or no?
75
- self.parsed_answer = JSON.parse(answer)
77
+ self.parsed_answer = begin
78
+ JSON.parse(fencepostless_answer)
79
+ rescue => e
80
+ # see if we can extract the last fence-posts content just in case
81
+ last_fence_post_regex = /```\w*\s*\n((?:(?!```).)+)\n```(?:(?!```).)*\z/m
82
+ begin
83
+ match = last_fence_post_regex.match(stripped_answer)
84
+ if match
85
+ JSON.parse(match[1])
86
+ else
87
+ # :nocov:
88
+ raise e
89
+ # :nocov:
90
+ end
91
+ rescue
92
+ # :nocov:
93
+ raise e
94
+ # :nocov:
95
+ end
96
+ end
76
97
  end
77
98
 
78
99
  module ClassMethods
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-llm-backed-command
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-05 00:00:00.000000000 Z
10
+ date: 2025-03-06 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: foobara-ai