@heylemon/lemonade 2026.2.21 → 2026.2.25

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.
@@ -135,6 +135,15 @@ export async function resolveApiKeyForProvider(params) {
135
135
  }
136
136
  catch { }
137
137
  }
138
+ // When the provider has a custom baseUrl (proxy mode), prefer the config's
139
+ // explicit apiKey over shell env vars — the env var holds the real provider
140
+ // key while the config apiKey is the proxy/gateway auth token.
141
+ const providerEntry = resolveProviderConfig(cfg, provider);
142
+ const hasCustomBaseUrl = Boolean(providerEntry?.baseUrl?.trim());
143
+ const customKey = getCustomProviderApiKey(cfg, provider);
144
+ if (hasCustomBaseUrl && customKey) {
145
+ return { apiKey: customKey, source: "models.json", mode: "api-key" };
146
+ }
138
147
  const envResolved = resolveEnvApiKey(provider);
139
148
  if (envResolved) {
140
149
  return {
@@ -143,7 +152,6 @@ export async function resolveApiKeyForProvider(params) {
143
152
  mode: envResolved.source.includes("OAUTH_TOKEN") ? "oauth" : "api-key",
144
153
  };
145
154
  }
146
- const customKey = getCustomProviderApiKey(cfg, provider);
147
155
  if (customKey) {
148
156
  return { apiKey: customKey, source: "models.json", mode: "api-key" };
149
157
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.2.21",
3
- "commit": "f1adf7fa5b1b100dc4f58d4325177d6e5b5b8a7d",
4
- "builtAt": "2026-02-19T11:32:30.329Z"
2
+ "version": "2026.2.25",
3
+ "commit": "c541a48e05b68c3a4d189a35f48649c388f57fa1",
4
+ "builtAt": "2026-02-19T17:46:07.135Z"
5
5
  }
@@ -1 +1 @@
1
- 61cedf672a2f645b8bc0c25ed3098af955cc9ee4c0a98935bd816883b972f478
1
+ 140b3b7c47510604aa1c59436ecf4b03ac92f2762d85a0c50581d82725391c66
@@ -1015,11 +1015,19 @@ export async function runCapability(params) {
1015
1015
  if (shouldLogVerbose()) {
1016
1016
  logVerbose("audio understanding skipped for WhatsApp: local Parakeet is unavailable");
1017
1017
  }
1018
+ // Return a synthetic transcription so the agent doesn't hallucinate
1019
+ // about installing Whisper or other transcription tools.
1018
1020
  return {
1019
- outputs: [],
1021
+ outputs: selected.map((item) => ({
1022
+ kind: "audio.transcription",
1023
+ attachmentIndex: item.index,
1024
+ text: "[Voice message received. The user sent an audio note but transcription is temporarily unavailable. Ask them to send a text message instead.]",
1025
+ provider: "local-parakeet",
1026
+ model: "parakeet",
1027
+ })),
1020
1028
  decision: {
1021
1029
  capability,
1022
- outcome: "skipped",
1030
+ outcome: "success",
1023
1031
  attachments: selected.map((item) => ({
1024
1032
  attachmentIndex: item.index,
1025
1033
  attempts: [
@@ -1028,7 +1036,7 @@ export async function runCapability(params) {
1028
1036
  provider: "local-parakeet",
1029
1037
  model: "parakeet",
1030
1038
  outcome: "skipped",
1031
- reason: "local Parakeet unavailable",
1039
+ reason: "local Parakeet unavailable – injected placeholder",
1032
1040
  },
1033
1041
  ],
1034
1042
  chosen: undefined,
@@ -26,6 +26,10 @@ read_when:
26
26
  - Never send half-baked replies to messaging surfaces.
27
27
  - You're not the user's voice — be careful in group chats.
28
28
 
29
+ ## Conversation
30
+
31
+ When someone greets you or asks how you're doing, answer them like a human would. Say "I'm doing great!" or "All good on my end!" — don't just bounce their question back or immediately pivot to "what can I help with?" Small talk is fine. Be warm first, task-oriented second.
32
+
29
33
  ## Vibe
30
34
 
31
35
  Be the assistant you'd actually want to talk to. Concise when needed, thorough when it matters. Not a corporate drone. Not a sycophant. Just... good.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heylemon/lemonade",
3
- "version": "2026.2.21",
3
+ "version": "2026.2.25",
4
4
  "description": "AI gateway CLI for Lemon - local AI assistant with integrations",
5
5
  "publishConfig": {
6
6
  "access": "restricted"