Describe a pattern and I'll generate, compile, and run it.
+
+ Describe a pattern and I'll generate, compile, and run it.
+
-
+
{ifElse(
isGenerating,
Generating code...,
@@ -130,12 +156,32 @@ export default pattern(({ prompt }) => {
Open Generated Pattern
,
- Enter a prompt to generate a pattern,
+
+ Enter a prompt to generate a pattern
+ ,
),
),
)}
+ {ifElse(
+ isReady,
+
+
Generated Pattern
+
+ {compiled.result}
+
+
,
+ ,
+ )}
+
{ifElse(
hasCode,
From 23cbe146775006dd44dc79f1aece848cd58edb81 Mon Sep 17 00:00:00 2001
From: Ben Follington <5009316+bfollington@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:00:23 -0800
Subject: [PATCH 4/5] Fix lint error
---
packages/patterns/write-and-run.tsx | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/packages/patterns/write-and-run.tsx b/packages/patterns/write-and-run.tsx
index 402fe284f..d366625ce 100644
--- a/packages/patterns/write-and-run.tsx
+++ b/packages/patterns/write-and-run.tsx
@@ -98,11 +98,9 @@ export default pattern(({ prompt }) => {
});
// Step 2: Compile the generated code when ready
- const compileParams = derive(generated, (g) => ({
- files: processedResult
- ? [{ name: "/main.tsx", contents: processedResult }]
- : [],
- main: processedResult ? "/main.tsx" : "",
+ const compileParams = derive(processedResult, (p) => ({
+ files: p ? [{ name: "/main.tsx", contents: p }] : [],
+ main: p ? "/main.tsx" : "",
}));
const compiled = compileAndRun(compileParams);
From dc27b775fb8a9b662d0359d435528fafec761f1c Mon Sep 17 00:00:00 2001
From: Ben Follington <5009316+bfollington@users.noreply.github.com>
Date: Fri, 21 Nov 2025 15:20:43 -0800
Subject: [PATCH 5/5] Use `haiku` for suggestions
---
packages/patterns/suggestion.tsx | 2 +-
packages/patterns/todo-with-suggestion.tsx | 20 +-------------------
packages/toolshed/routes/ai/llm/models.ts | 16 ++++++++++++++++
3 files changed, 18 insertions(+), 20 deletions(-)
diff --git a/packages/patterns/suggestion.tsx b/packages/patterns/suggestion.tsx
index 792384d8d..9ca406c54 100644
--- a/packages/patterns/suggestion.tsx
+++ b/packages/patterns/suggestion.tsx
@@ -29,7 +29,7 @@ export const Suggestion = pattern(
fetchAndRunPattern: patternTool(fetchAndRunPattern),
listPatternIndex: patternTool(listPatternIndex),
},
- model: "anthropic:claude-sonnet-4-5",
+ model: "anthropic:claude-haiku-4-5",
schema: toSchema<{ cell: Cell }>(),
});
diff --git a/packages/patterns/todo-with-suggestion.tsx b/packages/patterns/todo-with-suggestion.tsx
index 4ef5f71e8..8e8f518ee 100644
--- a/packages/patterns/todo-with-suggestion.tsx
+++ b/packages/patterns/todo-with-suggestion.tsx
@@ -18,7 +18,7 @@ interface Output {
export default pattern(({ items }) => {
// AI suggestion based on current todos
const suggestion = Suggestion({
- situation: "Based on my todo list, suggest a helpful pattern or tool",
+ situation: "Based on my todo list, use a pattern to help me.",
context: { items },
});
@@ -42,12 +42,6 @@ export default pattern(({ items }) => {
{/* Todo items with per-item suggestions */}
{items.map((item) => {
- const itemSuggestion = Suggestion({
- situation:
- "Suggest a helpful action or pattern for this specific todo item",
- context: { item, allItems: items },
- });
-
return (