Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
44be584
Use anthropic everywhere, only SDK that supports WASM
sourishkrout Nov 17, 2025
113cdb8
First stab at Pyodide-powered code block exec
sourishkrout Nov 17, 2025
139a36b
Move RunnableProvider up component tree for DRY
sourishkrout Nov 21, 2025
a02dc57
Move to root-location and explain webcomponents import with comment
sourishkrout Nov 21, 2025
9e57f61
Remove proxy
sourishkrout Nov 25, 2025
4b071da
Rewrite RunnableContext in preperation for VCR.py
sourishkrout Nov 25, 2025
3f30bd4
Temp commit until mirascope UI is upstreamed and vcy.py casette gen i…
sourishkrout Nov 25, 2025
028f8f9
Handle errors ahead of surfacing them in the UX
sourishkrout Nov 26, 2025
eee0e3e
Safe recording of VCR.py's cassettes for examples
sourishkrout Nov 26, 2025
2ddc2db
Newly generated examples
sourishkrout Nov 26, 2025
1ad9c89
Work in progress to leverage preprocessing to serve VRC.py cassettes
sourishkrout Nov 27, 2025
6aee7aa
Name after the what not the how
sourishkrout Dec 1, 2025
694c262
Use "system"
sourishkrout Dec 1, 2025
e4a32bb
Don't use preprocessing to serve VCR.py's cassettes
sourishkrout Dec 1, 2025
657d9ee
Check for VCR.py cassettes on load and rely on browser cached after
sourishkrout Dec 1, 2025
94073dd
Refactor
sourishkrout Dec 1, 2025
5298a6b
Same as dirname
sourishkrout Dec 1, 2025
baf22ff
Streamline integration into code block
sourishkrout Dec 1, 2025
ce73648
Publish and watch safe cassettes but only if they are in /content
sourishkrout Dec 1, 2025
1eef8ae
Record checksum, serve YAML via static server
sourishkrout Dec 1, 2025
cc26605
Record cached HTTP with sha256 checksums
sourishkrout Dec 1, 2025
0f932f5
Catch instances where examples were updated but no cached HTTP recorded
sourishkrout Dec 1, 2025
b1b5d28
Better description
sourishkrout Dec 1, 2025
de04a59
Break out as separate
sourishkrout Dec 2, 2025
682675e
Migrate to Worker Thread to prevent WASM from locking the UI thread
sourishkrout Dec 2, 2025
f73f74b
Disable button when not ready
sourishkrout Dec 2, 2025
7034c70
Report successful bootstrapping of Pyodide
sourishkrout Dec 2, 2025
aa2c458
Worker thread needs ES bundling
sourishkrout Dec 2, 2025
3986db6
Separate run button available versus ready
sourishkrout Dec 2, 2025
dc931da
Irrelevant todo
sourishkrout Dec 2, 2025
d17c806
Do not check-in
sourishkrout Dec 2, 2025
0d5ae32
Drop classifiers
sourishkrout Dec 3, 2025
c2f6cc9
No longer required
sourishkrout Dec 3, 2025
4d555fa
Don't duplicate errors
sourishkrout Dec 3, 2025
6205940
Return type URL and write to /tmp
sourishkrout Dec 3, 2025
3ab0ae4
VCR.py 8 breaks cassette replay inside Pyodide
sourishkrout Dec 3, 2025
4f4a5c7
One step closer to desired UX
sourishkrout Dec 3, 2025
ab246a7
Smaller text
sourishkrout Dec 3, 2025
86ba819
Move under script
sourishkrout Dec 3, 2025
6227a44
Cassettes are no longer directly colocated with examples
sourishkrout Dec 4, 2025
cc9e5af
Move and serve cassettes from a flattened sibling directory to content
sourishkrout Dec 4, 2025
f57b29d
Flattened cassettes with sha256
sourishkrout Dec 4, 2025
c789d2b
Check if python files have valid cassettes
sourishkrout Dec 4, 2025
0475ef8
Update docs
sourishkrout Dec 4, 2025
35dfb3d
Use validation script directly
sourishkrout Dec 4, 2025
3a71efc
Migrate to directly replaying cached HTTP cassettes (VCR.py)
sourishkrout Dec 5, 2025
743222e
Comprehensive tests for VCR cassettes related logic
sourishkrout Dec 5, 2025
b23fc6f
Track run button states
sourishkrout Dec 5, 2025
71e407d
Optimzie UI for replay experience
sourishkrout Dec 5, 2025
d98c0cf
Track cachedHTTP's uv.lock
sourishkrout Dec 5, 2025
3f42ad7
Track memo dep
sourishkrout Dec 5, 2025
c2a9a24
Add all runnable intros, expect format tool since it's unclear how to…
sourishkrout Dec 5, 2025
f7d5dd7
Top-level prop to turn runnable block on/off
sourishkrout Dec 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public/social-cards/
public/seo-metadata.json
public/llms-full.txt
public/docs
public/cassettes
debug-output

*storybook.log
227 changes: 216 additions & 11 deletions bun.lock

Large diffs are not rendered by default.

105 changes: 105 additions & 0 deletions cassettes/docs_mirascope_v2_examples_intro_decorator_async.py.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
interactions:
- request:
body: '{"max_tokens":16000,"messages":[{"role":"user","content":"Please recommend a book in fantasy."}],"model":"claude-sonnet-4-0"}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
anthropic-version:
- '2023-06-01'
connection:
- keep-alive
content-length:
- '125'
content-type:
- application/json
host:
- api.anthropic.com
user-agent:
- AsyncAnthropic/Python 0.75.0
x-api-key:
- cached-http-with-invalid-key
x-stainless-arch:
- arm64
x-stainless-async:
- async:asyncio
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 0.75.0
x-stainless-read-timeout:
- '600'
x-stainless-retry-count:
- '0'
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.10.18
x-stainless-timeout:
- '600'
method: POST
uri: https://api.anthropic.com/v1/messages
response:
body:
string: !!binary H4sIAAAAAAAAAwAAAP//dFRda91GEP0r031Ja3SNbWwC96W0pg8htBiTNoW6XOZqR9rpXc0qO7NWRMh/L7uynTalT4Kdr3POnNEnNyVP0e1dH7F42mkSIdtd764urm4ubi6vXefYu72bdDxcXP52v9yN8+9yN75+fXkT7n5dh59Po+ucrTPVLFLFkVzncor1AVVZDcVc5/okRmJu/8en53yjjzXSPnv35pWHTH2aJhIPZ2cP7l0g+AUngjSABYL3LP7BnZ3BcYU7tMz9Ce6ThaGonsODPMi7wAqsLXvgrAbHlE7AArXXW5bxxDFShtuQk3AfCZQykwKKh4HQSiaFI2ExHkrsIK6Ze4ww56QEFtAgE3oFjFNSg8gngjmR5RXQwHgiPW/T1FJeYUgxpkXh7WOyQB0gRBpJPNYYjyUTGMXIMkLFnhZ5KkQDFGCRrqlSxJ5z1lQstDhMODZ0RfiRsrKtsATKBG1+8ZVZ1QKzVREFp9rkW4Qh5am+tAbfNfa19YdCamAJBhbfKqdVjTKnonAbUHxmFFhCgibkVjXgxHE9rwt4XwWa8EQKbKAz9Yxx/yA7+OljT7NxEoywZG5s1Na4ifpK4Zgqq74nVT5GapgiG2XMa23wwwYWtCKa4IhKHpKArtOMFtbuiV7XKjEbD9zXKW1pA1FUGDJpqM3uuQ+wpBz97lg4+pq3sAXwZMiVWF/iZobabVotpJjGFWCD0qdpflrbptAKS3okAQs5lTGkYjXxNmDG3ijrFxQwkhQWiiuEMqGAJ53ZaDMtiqFaW6qSVZWqrG+qQDPlgXoDHqoFgOSvtEL/PGHnM1cAW4d1Y/Ni5M2/HVio6GBAzrBglkpg1yZb4OxfzqW9ZG6UA9aLIAHCkXJcARdkI19NBOmRMiB46tHTN/Bjsa+Pr/4AvMJCMdZ1sW0ur7KyAh41xWJVjSVlC+26WMbNTalE38i2M3v5O2D1kVacKCvMddd9iZhfyGs5jiSZOkgZfGpXwAqaSrXGPBPW1X3vPv/ZObU0HzKhJnF7R+IPVrK4p4DSh0LSk9tLibFzpf3h9p8cy1zsYOlEom5/ed25HvtAhz5Tg3f4d8LFc7zy+7/Yc23tT3OgiTLGw8303/wv0cvwdfRz51Kxfz5dXf8tCx2l4tSisszk1PiSzNQiJSslcLQkFqUo1dYCAAAA//8DACV57N4IBgAA
headers:
CF-RAY:
- 9a8dbee7fd34ebe9-SJC
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Thu, 04 Dec 2025 19:35:21 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
X-Robots-Tag:
- none
anthropic-organization-id:
- bcf0d122-a6b6-40d4-873c-83762f5fb168
anthropic-ratelimit-input-tokens-limit:
- '30000'
anthropic-ratelimit-input-tokens-remaining:
- '30000'
anthropic-ratelimit-input-tokens-reset:
- '2025-12-04T19:35:15Z'
anthropic-ratelimit-output-tokens-limit:
- '8000'
anthropic-ratelimit-output-tokens-remaining:
- '8000'
anthropic-ratelimit-output-tokens-reset:
- '2025-12-04T19:35:23Z'
anthropic-ratelimit-requests-limit:
- '50'
anthropic-ratelimit-requests-remaining:
- '49'
anthropic-ratelimit-requests-reset:
- '2025-12-04T19:35:15Z'
anthropic-ratelimit-tokens-limit:
- '38000'
anthropic-ratelimit-tokens-remaining:
- '38000'
anthropic-ratelimit-tokens-reset:
- '2025-12-04T19:35:15Z'
cf-cache-status:
- DYNAMIC
request-id:
- req_011CVnD2PpxUzVYEGZzFLadE
retry-after:
- '48'
strict-transport-security:
- max-age=31536000; includeSubDomains; preload
x-envoy-upstream-service-time:
- '7736'
status:
code: 200
message: OK
version: 1
source_sha256: 8c4a9858417590b6f05831961dab552ddb9160f8d68bdd3d60d288765c58d1b4
Loading