@heylemon/lemonade 0.1.2 → 0.1.4

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.
package/bin/lemon-slack CHANGED
@@ -28,7 +28,7 @@ case "$1" in
28
28
  ;;
29
29
  channels)
30
30
  api_call POST "/api/lemonade/tools/execute" \
31
- '{"toolName": "SLACK_LIST_ALL_CHANNELS", "parameters": {}}'
31
+ '{"toolName": "SLACK_LIST_ALL_CHANNELS", "parameters": {"limit": 500, "types": "public_channel,private_channel"}}'
32
32
  ;;
33
33
  dms)
34
34
  api_call POST "/api/lemonade/tools/execute" \
@@ -51,7 +51,7 @@ case "$1" in
51
51
  find-channel)
52
52
  [[ -z "$2" ]] && echo "Usage: lemon-slack find-channel <name>" && exit 1
53
53
  api_call POST "/api/lemonade/tools/execute" \
54
- '{"toolName": "SLACK_FIND_CHANNELS", "parameters": {"query": "'"$2"'"}}'
54
+ '{"toolName": "SLACK_FIND_CHANNELS", "parameters": {"query": "'"$2"'", "types": "public_channel,private_channel"}}'
55
55
  ;;
56
56
  upload)
57
57
  [[ -z "$2" ]] || [[ -z "$3" ]] && echo "Usage: lemon-slack upload <channel_or_user_id> <file_path> [message]" && exit 1
@@ -415,6 +415,12 @@ export function buildAgentSystemPrompt(params) {
415
415
  "ALWAYS use the `cron` tool (action: add/update/remove/list/run/status) for managing cron jobs and reminders.",
416
416
  "NEVER use `exec` or shell commands to read/write cron files (e.g. ~/.lemonade/cron/jobs.json) directly — the gateway cron service will not detect the change.",
417
417
  "",
418
+ "### Cancelling / stopping reminders",
419
+ "When the user asks to stop, cancel, turn off, or remove a reminder or recurring notification — in ANY phrasing — you MUST actually remove the cron job. Do NOT just acknowledge verbally.",
420
+ "Steps: 1) `cron` action:list → find the matching job(s) by name/text/schedule, 2) `cron` action:remove with the jobId for each match.",
421
+ "Common phrasings that mean 'remove the cron job': 'stop sending me…', 'I don't need those anymore', 'cancel my reminders', 'turn off notifications', 'no more hourly…', etc.",
422
+ "If multiple jobs could match, list them and confirm which to remove. If only one matches, remove it immediately.",
423
+ "",
418
424
  "## Lemonade CLI Quick Reference",
419
425
  "Lemonade is controlled via subcommands. Do not invent commands.",
420
426
  "To manage the Gateway daemon service (start/stop/restart):",
@@ -122,7 +122,7 @@ ACTIONS:
122
122
  - list: List jobs (use includeDisabled:true to include disabled)
123
123
  - add: Create job (requires job object, see schema below)
124
124
  - update: Modify job (requires jobId + patch object)
125
- - remove: Delete job (requires jobId)
125
+ - remove: Delete/cancel job (requires jobId). IMPORTANT: When user asks to stop, cancel, or turn off any reminder/notification, you MUST list jobs first, then remove the matching one(s). Do not just acknowledge — actually remove.
126
126
  - run: Trigger job immediately (requires jobId)
127
127
  - runs: Get job run history (requires jobId)
128
128
  - wake: Send wake event (requires text, optional mode)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.2",
3
- "commit": "edb23508314733d07cc2a18f0affbb5f72e9931b",
4
- "builtAt": "2026-02-20T23:05:14.469Z"
2
+ "version": "0.1.4",
3
+ "commit": "880ce819d9b8b545e14bf2e643af833ed51361f2",
4
+ "builtAt": "2026-02-21T09:49:07.513Z"
5
5
  }
@@ -1 +1 @@
1
- 3641485d183a81ebf5afc4f93c9146ff5dfc77d261ef3e4c62f92e826641730d
1
+ 266bfc5a1d9dd1a9db1ad07062f473788689bdfc7d2e7bff2fafc0f2a0922fb9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heylemon/lemonade",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "AI gateway CLI for Lemon - local AI assistant with integrations",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
@@ -37,8 +37,15 @@ Use the `message` tool for Slack operations whenever possible. It talks directly
37
37
  ### Send to Channel Workflow
38
38
 
39
39
  1. Search for the channel: `message { action: "search-channels", channel: "slack", query: "general" }`
40
- 2. Get the channel ID (e.g. `channel:C123ABC`)
41
- 3. Send: `message { action: "send", channel: "slack", target: "channel:C123ABC", message: "Hello!" }`
40
+ 2. From the results, find the channel whose name **exactly matches** what the user asked for.
41
+ 3. Use that channel's ID (e.g. `channel:C123ABC`).
42
+ 4. Send: `message { action: "send", channel: "slack", target: "channel:C123ABC", message: "Hello!" }`
43
+
44
+ **CRITICAL — Exact channel matching:**
45
+ - NEVER send to a channel that doesn't exactly match the user's request. If the user says "lemon-internal", only use a channel literally named `lemon-internal` — not `techstack`, not `general`, not any other channel.
46
+ - If search returns multiple results, pick the one whose name is an exact match.
47
+ - If NO exact match exists, show the user the closest matches and ask them to clarify. Do NOT pick one yourself.
48
+ - NEVER substitute a different channel because it "seems related" or is the closest fuzzy match.
42
49
 
43
50
  ## Fallback: lemon-slack CLI
44
51
 
@@ -68,6 +75,6 @@ lemon-slack upload "CHANNEL_OR_USER_ID" "/path/to/file.pdf" "Here's the report"
68
75
  ## Error Handling
69
76
 
70
77
  - **"User not found"** → The name may be misspelled. Try `message { action: "search-users", channel: "slack", query: "" }` with empty query to list everyone, then find the closest match. Ask the user if unsure. This is NOT a connection failure.
71
- - **"Channel not found"** → Try `message { action: "search-channels", channel: "slack", query: "" }` with empty query to list all. Pick the closest match.
78
+ - **"Channel not found"** → Try `message { action: "search-channels", channel: "slack", query: "" }` with empty query to list all. Look for an exact name match. If none, show the user the available channels and ask which one they meant. NEVER send to a different channel than what was requested.
72
79
  - **NEVER fall back to browser** if a Slack command returns no results. Retry with different input or ask for clarification.
73
80
  - **NEVER open `app.slack.com` in a browser.** Slack is CLI/native only.