smoothie-code 1.0.0 → 1.1.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.
@@ -76,7 +76,16 @@ CONTEXT="🧃 Smoothie auto-blend results — multiple models reviewed this plan
76
76
 
77
77
  $BLEND_RESULTS
78
78
 
79
- Revise the plan above based on this feedback. Incorporate valid suggestions, discard irrelevant ones. Present the improved plan to the user."
79
+ IMPORTANT You must do TWO things:
80
+
81
+ 1. FIRST, show a brief Smoothie summary to the user so they know the blend ran. Format it like:
82
+
83
+ 🧃 Smoothie reviewed this plan (N models):
84
+ ModelName — one-line summary of their key feedback
85
+ ModelName — one-line summary of their key feedback
86
+ (skip models that returned errors or empty responses)
87
+
88
+ 2. THEN revise the plan incorporating valid suggestions. Discard irrelevant ones."
80
89
 
81
90
  # Return: allow ExitPlanMode but inject blend results
82
91
  node -e "
package/dist/blend-cli.js CHANGED
@@ -42,7 +42,7 @@ async function queryCodex(prompt) {
42
42
  try {
43
43
  const tmpFile = join(PROJECT_ROOT, `.codex-out-${Date.now()}.txt`);
44
44
  await execFile('codex', ['exec', '--full-auto', '-o', tmpFile, prompt], {
45
- timeout: 90_000,
45
+ timeout: 0,
46
46
  });
47
47
  let response;
48
48
  try {
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ async function queryCodex(prompt) {
33
33
  try {
34
34
  const tmpFile = join(PROJECT_ROOT, `.codex-out-${Date.now()}.txt`);
35
35
  await execFile('codex', ['exec', '--full-auto', '-o', tmpFile, prompt], {
36
- timeout: 90_000,
36
+ timeout: 0,
37
37
  });
38
38
  let response;
39
39
  try {
Binary file
package/docs/favicon.svg CHANGED
@@ -1,17 +1,17 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
2
  <rect width="64" height="64" rx="14" fill="#0d1117"/>
3
- <g transform="translate(12, 8)" stroke="#f0f6fc" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none">
4
- <!-- Cup body -->
5
- <path d="M 6 22 L 10 48 L 30 48 L 34 22"/>
6
- <!-- Lid -->
7
- <path d="M 2 18 L 38 18 C 38 18 38 22 20 22 C 2 22 2 18 2 18"/>
3
+ <g transform="translate(12, 10)" stroke="#f0f6fc" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none">
4
+ <!-- Straw (inside viewBox now) -->
5
+ <line x1="24" y1="8" x2="32" y2="2"/>
6
+ <line x1="32" y1="2" x2="36" y2="2"/>
8
7
  <!-- Dome -->
9
- <path d="M 8 18 C 8 10 14 4 20 4 C 26 4 32 10 32 18"/>
10
- <!-- Straw -->
11
- <line x1="24" y1="4" x2="34" y2="-6" stroke-width="2.5"/>
12
- <line x1="34" y1="-6" x2="38" y2="-6" stroke-width="2.5"/>
8
+ <path d="M 8 20 C 8 12 14 6 20 6 C 26 6 32 12 32 20"/>
9
+ <!-- Lid -->
10
+ <path d="M 2 20 L 38 20 C 38 20 38 24 20 24 C 2 24 2 20 2 20"/>
11
+ <!-- Cup body -->
12
+ <path d="M 6 24 L 10 46 L 30 46 L 34 24"/>
13
13
  <!-- Drips -->
14
- <path d="M 13 22 C 13 26 17 26 17 22" opacity="0.5" stroke-width="2"/>
15
- <path d="M 23 22 C 23 26 27 26 27 22" opacity="0.5" stroke-width="2"/>
14
+ <path d="M 13 24 C 13 28 17 28 17 24" opacity="0.4" stroke-width="1.8"/>
15
+ <path d="M 23 24 C 23 28 27 28 27 24" opacity="0.4" stroke-width="1.8"/>
16
16
  </g>
17
17
  </svg>
package/docs/index.html CHANGED
@@ -4,6 +4,7 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Smoothie — Multi-model review for Claude Code</title>
7
+ <link rel="icon" type="image/png" href="favicon.png">
7
8
  <link rel="icon" type="image/svg+xml" href="favicon.svg">
8
9
  <meta name="description" content="Query multiple AI models in parallel, get one blended answer. Plugin for Claude Code, Codex CLI, and Gemini CLI.">
9
10
  <meta property="og:title" content="Smoothie">
@@ -204,6 +205,11 @@
204
205
  text-align: center;
205
206
  border-top: 1px solid #21262d;
206
207
  }
208
+ footer {
209
+ display: flex;
210
+ justify-content: center;
211
+ gap: 24px;
212
+ }
207
213
  footer a {
208
214
  display: inline-flex;
209
215
  align-items: center;
@@ -287,7 +293,14 @@
287
293
  <footer>
288
294
  <a href="https://github.com/hotairbag/smoothie">
289
295
  <svg viewBox="0 0 16 16"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
290
- hotairbag/smoothie
296
+ GitHub
297
+ </a>
298
+ <a href="https://openrouter.ai/apps?url=https%3A%2F%2Fhotairbag.github.io%2Fsmoothie">
299
+ <svg viewBox="0 0 16 16"><path d="M8 1a7 7 0 100 14A7 7 0 008 1zm0 1.5a5.5 5.5 0 11-.001 11.001A5.5 5.5 0 018 2.5zm0 2a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4.5zm0 6a.75.75 0 100 1.5.75.75 0 000-1.5z"/></svg>
300
+ OpenRouter Usage
301
+ </a>
302
+ <a href="https://www.npmjs.com/package/smoothie-code">
303
+ npm
291
304
  </a>
292
305
  </footer>
293
306
 
package/icon.png ADDED
Binary file
package/icon.svg CHANGED
@@ -1,17 +1,17 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
2
  <rect width="64" height="64" rx="14" fill="#0d1117"/>
3
- <g transform="translate(12, 8)" stroke="#f0f6fc" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none">
4
- <!-- Cup body -->
5
- <path d="M 6 22 L 10 48 L 30 48 L 34 22"/>
6
- <!-- Lid -->
7
- <path d="M 2 18 L 38 18 C 38 18 38 22 20 22 C 2 22 2 18 2 18"/>
3
+ <g transform="translate(12, 10)" stroke="#f0f6fc" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none">
4
+ <!-- Straw (inside viewBox now) -->
5
+ <line x1="24" y1="8" x2="32" y2="2"/>
6
+ <line x1="32" y1="2" x2="36" y2="2"/>
8
7
  <!-- Dome -->
9
- <path d="M 8 18 C 8 10 14 4 20 4 C 26 4 32 10 32 18"/>
10
- <!-- Straw -->
11
- <line x1="24" y1="4" x2="34" y2="-6" stroke-width="2.5"/>
12
- <line x1="34" y1="-6" x2="38" y2="-6" stroke-width="2.5"/>
8
+ <path d="M 8 20 C 8 12 14 6 20 6 C 26 6 32 12 32 20"/>
9
+ <!-- Lid -->
10
+ <path d="M 2 20 L 38 20 C 38 20 38 24 20 24 C 2 24 2 20 2 20"/>
11
+ <!-- Cup body -->
12
+ <path d="M 6 24 L 10 46 L 30 46 L 34 24"/>
13
13
  <!-- Drips -->
14
- <path d="M 13 22 C 13 26 17 26 17 22" opacity="0.5" stroke-width="2"/>
15
- <path d="M 23 22 C 23 26 27 26 27 22" opacity="0.5" stroke-width="2"/>
14
+ <path d="M 13 24 C 13 28 17 28 17 24" opacity="0.4" stroke-width="1.8"/>
15
+ <path d="M 23 24 C 23 28 27 28 27 24" opacity="0.4" stroke-width="1.8"/>
16
16
  </g>
17
17
  </svg>
package/install.sh CHANGED
@@ -268,7 +268,7 @@ if (!preExists) {
268
268
  hooks: [{
269
269
  type: "command",
270
270
  command: "bash $SCRIPT_DIR/auto-blend-hook.sh",
271
- timeout: 120
271
+ timeout: 600
272
272
  }]
273
273
  });
274
274
  }
@@ -281,7 +281,7 @@ if (!bashHookExists) {
281
281
  hooks: [{
282
282
  type: "command",
283
283
  command: "bash $SCRIPT_DIR/pr-blend-hook.sh",
284
- timeout: 120
284
+ timeout: 600
285
285
  }]
286
286
  });
287
287
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smoothie-code",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/pr-blend-hook.sh CHANGED
@@ -73,11 +73,20 @@ if [ -z "$BLEND_RESULTS" ]; then
73
73
  fi
74
74
 
75
75
  # Build the additionalContext string
76
- CONTEXT="Smoothie PR review — multiple models reviewed this diff:
76
+ CONTEXT="🧃 Smoothie PR review — multiple models reviewed this diff:
77
77
 
78
78
  $BLEND_RESULTS
79
79
 
80
- Consider this feedback. If there are valid issues, revise the PR description to note them or fix the code before creating the PR."
80
+ IMPORTANT You must do TWO things:
81
+
82
+ 1. FIRST, show a brief Smoothie summary so the user knows the review ran:
83
+
84
+ 🧃 Smoothie reviewed this PR (N models):
85
+ ModelName — one-line key finding
86
+ ModelName — one-line key finding
87
+ (skip models that errored or returned empty)
88
+
89
+ 2. THEN address any valid issues — fix the code or note them in the PR description."
81
90
 
82
91
  # Return: allow Bash but inject blend results
83
92
  node -e "
package/src/blend-cli.ts CHANGED
@@ -64,7 +64,7 @@ async function queryCodex(prompt: string): Promise<ModelResult> {
64
64
  try {
65
65
  const tmpFile = join(PROJECT_ROOT, `.codex-out-${Date.now()}.txt`);
66
66
  await execFile('codex', ['exec', '--full-auto', '-o', tmpFile, prompt], {
67
- timeout: 90_000,
67
+ timeout: 0,
68
68
  });
69
69
  let response: string;
70
70
  try {
package/src/index.ts CHANGED
@@ -71,7 +71,7 @@ async function queryCodex(prompt: string): Promise<ModelResult> {
71
71
  try {
72
72
  const tmpFile = join(PROJECT_ROOT, `.codex-out-${Date.now()}.txt`);
73
73
  await execFile('codex', ['exec', '--full-auto', '-o', tmpFile, prompt], {
74
- timeout: 90_000,
74
+ timeout: 0,
75
75
  });
76
76
  let response: string;
77
77
  try {