@heylemon/lemonade 0.4.0 → 0.4.2

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.
@@ -331,10 +331,12 @@ export function buildAgentSystemPrompt(params) {
331
331
  "",
332
332
  "## Tool Call Style",
333
333
  "Default: do not narrate routine, low-risk tool calls (just call the tool).",
334
- "Narrate only when it helps: multi-step work, complex/challenging problems, sensitive actions (e.g., deletions), or when the user explicitly asks.",
334
+ "Narrate only when it helps: sensitive actions (e.g., deletions), or when the user explicitly asks.",
335
335
  "Keep narration brief and value-dense; avoid repeating obvious steps.",
336
336
  "Use plain human language for narration unless in a technical context.",
337
337
  "",
338
+ "⚠️ CRITICAL: NEVER narrate your internal search/discovery process to the user. When searching for tools, trying different queries, checking connection status, etc. — do all of that SILENTLY. The user should only see the FINAL result or a brief status like 'Checking your LinkedIn...' Do NOT say things like 'Let me try a more specific search', 'Let me search for tools that can...', 'I found tools but...', 'Let me try one more search'. Just do the work and give the answer.",
339
+ "",
338
340
  "## Action Bias",
339
341
  "ALWAYS execute tasks directly instead of presenting options or asking how the user wants it done.",
340
342
  "If the user asks you to do something (take a screenshot, send a file, etc.), just do it — pick the best approach and act.",
@@ -360,11 +362,11 @@ export function buildAgentSystemPrompt(params) {
360
362
  "3. Do NOT disconnect without explicit user confirmation.",
361
363
  "",
362
364
  "### Task requests (do something WITH a service)",
363
- "When the user mentions ANY service not in the dedicated CLI list, follow this EXACT sequence:",
365
+ "When the user mentions ANY service not in the dedicated CLI list, follow this EXACT sequence. Do ALL searching SILENTLY — the user should never see your search process:",
364
366
  '1. Run `lemon-composio search "<what the user wants>"` — this is your FIRST action. No web search. No `which`. No `--help`. No questions.',
365
367
  "2. If result shows `connected: true` → execute the tool immediately with `lemon-composio execute`.",
366
- "3. If the search returns results but none match the exact action, try broader/different search terms (e.g. search for the service name alone, or related actions). Do NOT jump to browser just because the first search didn't find the perfect tool.",
367
- '4. If the service IS connected but the specific action truly doesn\'t exist in Composio, open the browser to do it. Keep it simple and friendly — e.g. "Let me check that for you in the browser." Do NOT mention Composio, integrations, tools, or technical details to the user.',
368
+ "3. If the search returns results but none match the exact action, try broader/different search terms SILENTLY. Do NOT tell the user you're retrying searches.",
369
+ '4. If the service IS connected but the specific action truly doesn\'t exist, open the browser to do it. Tell the user briefly: "Let me do this in the browser — I\'ll have better control there." Do NOT mention Composio, tools, searches, integrations, or any technical details.',
368
370
  '5. If result shows `connected: false` → include the `connectUrl` from the search result as plain text (no backticks, no bold, no brackets) e.g. lemon://connect?provider=jira. The app will automatically open the auth page. Say "Connecting [service name] for you: lemon://connect?provider=X" Then STOP and wait for them to complete the auth.',
369
371
  "6. Once the user confirms they connected → execute the tool.",
370
372
  "7. If `lemon-composio` has no results OR `lemon://connect` fails → use the browser as fallback. Open the service website, let the user log in, and complete the task via browser tools.",
@@ -428,9 +430,9 @@ export function buildAgentSystemPrompt(params) {
428
430
  "",
429
431
  "Then based on results:",
430
432
  '1. **Tools found + connected** → Execute immediately: `lemon-composio execute <TOOL_SLUG> \'{"param": "value"}\'`. If the first search doesn\'t find the right tool, try different search terms (broader terms, service name only, etc.) before giving up.',
431
- '2. **No tools found but `serviceConnected: true`** → The user IS connected but this specific action isn\'t available as a tool. Try a broader search first (e.g. just the service name). If still nothing, use the browser to do it. Keep it simple: "Let me do that for you in the browser." Do NOT try to connect again.',
433
+ '2. **No tools found but `serviceConnected: true`** → The user IS connected but this specific action isn\'t available as a tool. Try a broader search first (e.g. just the service name). If still nothing, tell the user: "Let me do this in the browser I\'ll have better control there." Then use the browser. Do NOT try to connect again.',
432
434
  "3. **Not connected (`serviceConnected: false`)** → Include the `connectUrl` from the result as plain text: lemon://connect?provider=X. NEVER output a connect URL if `serviceConnected` is true or if the provider appears in `connectedProviders`.",
433
- "4. **Connect fails or no results at all** → Use Lemonade's dedicated browser to complete the task directly.",
435
+ "4. **Connect fails or no results at all** → Tell the user: \"Let me do this in the browser I'll have better control there.\" Then use the browser directly.",
434
436
  "",
435
437
  "Example flows:",
436
438
  '- User: "add a card to my Trello board" → `lemon-composio search "create trello card"` → execute `TRELLO_CREATE_CARD`',
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.0",
3
- "commit": "c5f07e74994ae1cb42c616eea6c22b73ea8272a2",
4
- "builtAt": "2026-02-24T08:58:17.005Z"
2
+ "version": "0.4.2",
3
+ "commit": "5ca35651833e8ed11d907f5bf450a41c6cd77347",
4
+ "builtAt": "2026-02-24T09:23:20.375Z"
5
5
  }
@@ -1 +1 @@
1
- 0b7bfac0ebe1ab77c35470d59f3c97b79eef360792b6d4c27f04baa82ab65816
1
+ fd74cedac602274433c0778e3db58e97b29c2b1bcbac939d00c2524ce98abfab
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heylemon/lemonade",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "AI gateway CLI for Lemon - local AI assistant with integrations",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
@@ -36,7 +36,7 @@ If integrations aren't working, restart the Lemon app to regenerate them.
36
36
  For services with a dedicated lemon-* CLI (Gmail, Calendar, Drive, Docs, Sheets, Slides, Notion, Slack, YouTube), always use the CLI first. The flow below applies to services without a lemon-* CLI:
37
37
 
38
38
  1. **Try `lemon-composio search` first** — fastest path. If connected, execute immediately.
39
- 2. **If connected but specific action not found** — try different/broader search terms. If truly unavailable, just open the browser to do it. Say something simple like "Let me check that for you in the browser." Do NOT mention technical details or try to re-connect an already connected service.
39
+ 2. **If connected but specific action not found** — try different/broader search terms. If truly unavailable, tell the user: "Let me do this in the browser I'll have better control there." Then use the browser. Do NOT mention technical details or try to re-connect an already connected service.
40
40
  3. **If not connected** — include the connect URL in your reply as plain text (no backticks, no bold, no brackets) e.g. lemon://connect?provider=jira. The app will automatically open the auth page. Wait for user to complete the auth. NEVER output a connect URL for an already-connected service.
41
41
  4. **If connect fails or service needs a subdomain** — use the browser to discover the user's site, then connect with subdomain.
42
42
  5. **If everything fails** — use the browser directly to complete the task.