@heylemon/lemonade 0.3.11 → 0.4.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.
|
@@ -353,13 +353,24 @@ export function buildAgentSystemPrompt(params) {
|
|
|
353
353
|
"For site-based services (Jira, Trello, Asana, Confluence), ask for their workspace/subdomain or use the browser to discover it, then output: lemon://connect?provider=jira&subdomain=THEIR_SUBDOMAIN",
|
|
354
354
|
"Provider IDs: gmail, slack, googlecalendar, googledrive, notion, youtube, jira, github, linear, trello, asana, etc.",
|
|
355
355
|
"",
|
|
356
|
+
"### Disconnect requests",
|
|
357
|
+
'When the user says "disconnect [service]", "unlink [service]", "remove [service]", or similar:',
|
|
358
|
+
'1. Ask for confirmation first: "Are you sure you want to disconnect [Service Name]? You can reconnect it anytime."',
|
|
359
|
+
"2. Only after the user confirms, output the disconnect URL as plain text: lemon://disconnect?provider=SERVICE_ID",
|
|
360
|
+
"3. Do NOT disconnect without explicit user confirmation.",
|
|
361
|
+
"",
|
|
356
362
|
"### Task requests (do something WITH a service)",
|
|
357
363
|
"When the user mentions ANY service not in the dedicated CLI list, follow this EXACT sequence:",
|
|
358
364
|
'1. Run `lemon-composio search "<what the user wants>"` — this is your FIRST action. No web search. No `which`. No `--help`. No questions.',
|
|
359
365
|
"2. If result shows `connected: true` → execute the tool immediately with `lemon-composio execute`.",
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
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
|
+
'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
|
+
"6. Once the user confirms they connected → execute the tool.",
|
|
370
|
+
"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.",
|
|
371
|
+
"",
|
|
372
|
+
"### Already-connected services",
|
|
373
|
+
"If `lemon-composio search` shows a service as `connected: true`, do NOT try to connect it again. Do NOT output lemon://connect for an already-connected service. Just use the available tools directly.",
|
|
363
374
|
"",
|
|
364
375
|
"### Account & Login Policy",
|
|
365
376
|
"NEVER create accounts or sign up for services on behalf of the user. If a service requires login or account creation in the browser:",
|
|
@@ -413,10 +424,13 @@ export function buildAgentSystemPrompt(params) {
|
|
|
413
424
|
'lemon-composio search "<what the user wants>"',
|
|
414
425
|
"```",
|
|
415
426
|
"",
|
|
427
|
+
"The response includes `connectedProviders` (all services the user has connected) and `serviceConnected` (whether the searched service is connected). Use these to determine connection status — even if no tools matched the query, `serviceConnected: true` means the user IS connected. Do NOT try to re-connect.",
|
|
428
|
+
"",
|
|
416
429
|
"Then based on results:",
|
|
417
|
-
'1. **
|
|
418
|
-
'2. **
|
|
419
|
-
"3. **
|
|
430
|
+
'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.',
|
|
432
|
+
"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.",
|
|
420
434
|
"",
|
|
421
435
|
"Example flows:",
|
|
422
436
|
'- User: "add a card to my Trello board" → `lemon-composio search "create trello card"` → execute `TRELLO_CREATE_CARD`',
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
0b7bfac0ebe1ab77c35470d59f3c97b79eef360792b6d4c27f04baa82ab65816
|
package/package.json
CHANGED
|
@@ -19,6 +19,10 @@ when you connect services in Lemon Settings > Integrations.
|
|
|
19
19
|
|
|
20
20
|
**When the user asks to "connect", "link", or "set up" a service:** Do NOT list capabilities or describe what you can do. Immediately output the connect URL as plain text. For site-based services (Jira, Trello, Asana), ask for or discover the subdomain first.
|
|
21
21
|
|
|
22
|
+
**When the user asks to "disconnect", "unlink", or "remove" a service:** Ask for confirmation first. After they confirm, output the disconnect URL as plain text:
|
|
23
|
+
- lemon://disconnect?provider=gmail
|
|
24
|
+
- lemon://disconnect?provider=slack
|
|
25
|
+
|
|
22
26
|
Provider IDs: gmail, slack, googlecalendar, googledrive, notion, youtube, jira, github, linear, trello, asana, etc.
|
|
23
27
|
|
|
24
28
|
The generated skills are placed in `~/.lemonade/skills/` and include:
|
|
@@ -32,9 +36,10 @@ If integrations aren't working, restart the Lemon app to regenerate them.
|
|
|
32
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:
|
|
33
37
|
|
|
34
38
|
1. **Try `lemon-composio search` first** — fastest path. If connected, execute immediately.
|
|
35
|
-
2. **If not
|
|
36
|
-
3. **If connect
|
|
37
|
-
4. **If
|
|
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.
|
|
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
|
+
4. **If connect fails or service needs a subdomain** — use the browser to discover the user's site, then connect with subdomain.
|
|
42
|
+
5. **If everything fails** — use the browser directly to complete the task.
|
|
38
43
|
|
|
39
44
|
## Site-Based Services (Need Subdomain Discovery)
|
|
40
45
|
|