@heylemon/lemonade 0.3.5 → 0.3.7

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.
@@ -171,7 +171,7 @@ export function buildAgentSystemPrompt(params) {
171
171
  grep: "Search file contents for patterns",
172
172
  find: "Find files by glob pattern",
173
173
  ls: "List directory contents",
174
- exec: "Run shell commands (pty available for TTY-required CLIs)",
174
+ exec: "Run shell commands (use lemon-* CLIs for integrations; for third-party apps like Trello/Jira/Asana use ONLY lemon-composio, never bare commands)",
175
175
  process: "Manage background exec sessions",
176
176
  web_search: "Search the web (Brave API)",
177
177
  web_fetch: "Fetch and extract readable content from a URL",
@@ -342,22 +342,25 @@ export function buildAgentSystemPrompt(params) {
342
342
  "For screenshots of native macOS windows: use Peekaboo (`peekaboo image`) via exec if the skill is available.",
343
343
  "",
344
344
  "## Third-Party App Requests (Trello, Jira, LinkedIn, Asana, HubSpot, Salesforce, Todoist, etc.)",
345
- "The ONLY dedicated `lemon-*` CLIs are: lemon-gmail, lemon-calendar, lemon-drive, lemon-docs, lemon-sheets, lemon-slides, lemon-notion, lemon-slack, lemon-youtube, lemon-twitter.",
346
- "For ALL other services, there is ONE universal tool: `lemon-composio`. Do NOT look for or try to use `lemon-trello`, `lemon-jira`, `lemon-asana`, `trello`, `jira`, or any other CLI. They do not exist. Do NOT search the web for how to set up these tools. Do NOT ask the user for API keys.",
347
345
  "",
348
- "When the user mentions ANY service not in the list above, follow this EXACT sequence:",
349
- '1. Run `lemon-composio search "<what the user wants>"` — this is your FIRST action. No web search. No browser. No questions.',
346
+ "⚠️ CRITICAL RULE: For ANY service not in the dedicated CLI list below, your ONLY option is `lemon-composio`. There are NO other CLIs. Running `trello`, `jira`, `composio`, `asana`, `hubspot`, or any bare command will FAIL. The ONLY command that works is `lemon-composio search` and `lemon-composio execute`. Do NOT run `which trello`, `trello --help`, `composio`, or try to discover CLIs. They do not exist.",
347
+ "",
348
+ "Dedicated `lemon-*` CLIs (the COMPLETE list): lemon-gmail, lemon-calendar, lemon-drive, lemon-docs, lemon-sheets, lemon-slides, lemon-notion, lemon-slack, lemon-youtube, lemon-twitter, lemon-composio.",
349
+ "ANYTHING not in this list → use `lemon-composio search`.",
350
+ "",
351
+ "When the user mentions ANY service not in the dedicated CLI list, follow this EXACT sequence:",
352
+ '1. Run `lemon-composio search "<what the user wants>"` — this is your FIRST and ONLY action. No web search. No browser. No `which`. No `--help`. No questions.',
350
353
  "2. If result shows `connected: true` → execute the tool immediately with `lemon-composio execute`.",
351
354
  '3. If result shows `connected: false` → say "Please connect [service name] so I can do this for you" and include the `connectUrl` from the search result. Then STOP and wait.',
352
355
  "4. Once the user confirms they connected → execute the tool.",
353
356
  "",
354
- "BANNED RESPONSES — never say any of these:",
355
- '- "I don\'t have [X] integration/connected"',
356
- '- "I can help you create tasks in other tools instead"',
357
- '- "Would you like to use [alternative] instead?"',
358
- "- Any numbered list of alternative tools",
359
- '- Instructions to get API keys, tokens, or set up CLI auth for third-party services',
360
- '- Opening a browser to look up how to use a third-party service',
357
+ "BANNED ACTIONS — never do any of these for third-party services:",
358
+ "- Running `which <service>`, `<service> --help`, `<service> auth:*`, or any bare CLI command",
359
+ "- Running `composio` (wrong command use `lemon-composio`)",
360
+ "- Asking the user for API keys, tokens, or manual CLI auth setup",
361
+ "- Searching the web for how to set up a service",
362
+ "- Opening a browser to configure a service",
363
+ '- Suggesting alternative tools ("Would you like to use X instead?")',
361
364
  "If the user says Trello, they want Trello. Not Reminders. Not Things. Not Notion. Run `lemon-composio search` and make it happen.",
362
365
  "",
363
366
  "## URLs & Quick Open",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.5",
3
- "commit": "6128eff2491278d3804473c79310872847c12ec5",
4
- "builtAt": "2026-02-23T07:19:32.336Z"
2
+ "version": "0.3.7",
3
+ "commit": "93c41d946a38884637b3ebbc7cdf1a68f5b0a440",
4
+ "builtAt": "2026-02-23T09:31:44.177Z"
5
5
  }
@@ -1 +1 @@
1
- b681a3b0e6a76ca1c37022a40f223f2f75bad1a576ca86b899c2d61bdecbce35
1
+ a98b847a612061c27f0ee5903ae3340e817161e387a834b70185809fc76ec753
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heylemon/lemonade",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "AI gateway CLI for Lemon - local AI assistant with integrations",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
@@ -25,7 +25,6 @@
25
25
  "lemon-slides": "./bin/lemon-slides",
26
26
  "lemon-youtube": "./bin/lemon-youtube",
27
27
  "lemon-cron": "./bin/lemon-cron",
28
- "lemon-jira": "./bin/lemon-jira",
29
28
  "lemon-twitter": "./bin/lemon-twitter",
30
29
  "lemon-composio": "./bin/lemon-composio"
31
30
  },
package/bin/lemon-jira DELETED
@@ -1,93 +0,0 @@
1
- #!/bin/bash
2
- # Lemon Jira CLI - Manage Jira issues via Composio
3
- # Resolve symlinks to find the real script directory
4
- SCRIPT_PATH="$0"
5
- while [[ -L "$SCRIPT_PATH" ]]; do
6
- SCRIPT_DIR="$(cd -P "$(dirname "$SCRIPT_PATH")" && pwd)"
7
- SCRIPT_PATH="$(readlink "$SCRIPT_PATH")"
8
- [[ "$SCRIPT_PATH" != /* ]] && SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT_PATH"
9
- done
10
- SCRIPT_DIR="$(cd -P "$(dirname "$SCRIPT_PATH")" && pwd)"
11
- source "$SCRIPT_DIR/lemon-cli-header.sh"
12
-
13
- case "$1" in
14
- status)
15
- api_call GET "/api/lemonade/tools/status" | jq '{hasJira}'
16
- ;;
17
- issues)
18
- [[ -z "$2" ]] && echo "Usage: lemon-jira issues <project_key> [max]" && exit 1
19
- max="${3:-20}"
20
- api_call POST "/api/lemonade/tools/execute" \
21
- '{"toolName": "JIRA_SEARCH_ISSUES", "parameters": {"project_key": "'"$2"'", "max_results": '"$max"'}}'
22
- ;;
23
- my-issues)
24
- api_call POST "/api/lemonade/tools/execute" \
25
- '{"toolName": "JIRA_SEARCH_ISSUES", "parameters": {"assignee": "currentUser()", "max_results": 20}}'
26
- ;;
27
- search)
28
- [[ -z "$2" ]] && echo "Usage: lemon-jira search <jql_or_text>" && exit 1
29
- # If it looks like JQL (contains = or AND/OR), use jql param; otherwise text search
30
- if [[ "$2" == *"="* ]] || [[ "$2" == *" AND "* ]] || [[ "$2" == *" OR "* ]]; then
31
- api_call POST "/api/lemonade/tools/execute" \
32
- '{"toolName": "JIRA_SEARCH_ISSUES", "parameters": {"jql": "'"$2"'", "max_results": 20}}'
33
- else
34
- api_call POST "/api/lemonade/tools/execute" \
35
- '{"toolName": "JIRA_SEARCH_ISSUES", "parameters": {"text_search": "'"$2"'", "max_results": 20}}'
36
- fi
37
- ;;
38
- create)
39
- [[ -z "$2" ]] || [[ -z "$3" ]] && echo "Usage: lemon-jira create <project_key> <summary> [type] [description]" && exit 1
40
- type="${4:-Task}"
41
- desc="${5:-}"
42
- if [[ -n "$desc" ]]; then
43
- CREATE_JSON=$(jq -n --arg proj "$2" --arg summary "$3" --arg itype "$type" --arg desc "$desc" \
44
- '{toolName: "JIRA_CREATE_ISSUE", parameters: {project_key: $proj, summary: $summary, issue_type: $itype, description: $desc}}')
45
- else
46
- CREATE_JSON=$(jq -n --arg proj "$2" --arg summary "$3" --arg itype "$type" \
47
- '{toolName: "JIRA_CREATE_ISSUE", parameters: {project_key: $proj, summary: $summary, issue_type: $itype}}')
48
- fi
49
- echo "$CREATE_JSON" | curl -s -X POST \
50
- -H "Authorization: Bearer ${GATEWAY_TOKEN}" \
51
- -H "Content-Type: application/json" \
52
- -d @- \
53
- "${LEMON_BACKEND_URL}/api/lemonade/tools/execute"
54
- ;;
55
- get)
56
- [[ -z "$2" ]] && echo "Usage: lemon-jira get <issue_key>" && exit 1
57
- api_call POST "/api/lemonade/tools/execute" \
58
- '{"toolName": "JIRA_GET_ISSUE", "parameters": {"issue_id_or_key": "'"$2"'"}}'
59
- ;;
60
- comment)
61
- [[ -z "$2" ]] || [[ -z "$3" ]] && echo "Usage: lemon-jira comment <issue_key> <body>" && exit 1
62
- COMMENT_JSON=$(jq -n --arg key "$2" --arg body "$3" \
63
- '{toolName: "JIRA_ADD_COMMENT", parameters: {issue_id_or_key: $key, comment: $body}}')
64
- echo "$COMMENT_JSON" | curl -s -X POST \
65
- -H "Authorization: Bearer ${GATEWAY_TOKEN}" \
66
- -H "Content-Type: application/json" \
67
- -d @- \
68
- "${LEMON_BACKEND_URL}/api/lemonade/tools/execute"
69
- ;;
70
- transition)
71
- [[ -z "$2" ]] || [[ -z "$3" ]] && echo "Usage: lemon-jira transition <issue_key> <status_name>" && exit 1
72
- api_call POST "/api/lemonade/tools/execute" \
73
- '{"toolName": "JIRA_TRANSITION_ISSUE", "parameters": {"issue_id_or_key": "'"$2"'", "transition_id_or_name": "'"$3"'"}}'
74
- ;;
75
- projects)
76
- api_call POST "/api/lemonade/tools/execute" \
77
- '{"toolName": "JIRA_GET_ALL_PROJECTS", "parameters": {"maxResults": 50}}'
78
- ;;
79
- *)
80
- echo "Lemon Jira CLI"
81
- echo ""
82
- echo "Commands:"
83
- echo " lemon-jira issues <project> [max] - List project issues"
84
- echo " lemon-jira my-issues - My assigned issues"
85
- echo " lemon-jira search <jql_or_text> - Search issues (JQL or text)"
86
- echo " lemon-jira create <proj> <summary> [type] - Create issue (type default: Task)"
87
- echo " lemon-jira get <issue_key> - Get issue details"
88
- echo " lemon-jira comment <key> <body> - Add comment"
89
- echo " lemon-jira transition <key> <status> - Change status"
90
- echo " lemon-jira projects - List all projects"
91
- echo " lemon-jira status - Check connection"
92
- ;;
93
- esac