add ping toggle
This commit is contained in:
+39
-18
@@ -18,7 +18,8 @@
|
||||
(System/getenv "IAMWAITING_USER_ID"))
|
||||
toggles (or (:toggles config)
|
||||
{:idle-prompt true
|
||||
:permission-prompt true})]
|
||||
:permission-prompt true
|
||||
:permission-prompt-ping true})]
|
||||
{:webhook-url webhook-url
|
||||
:user-id user-id
|
||||
:toggles toggles}))
|
||||
@@ -38,7 +39,7 @@
|
||||
(catch Exception e
|
||||
{:success false :error (.getMessage e)})))
|
||||
|
||||
(defn format-waiting-message [event-data user-id]
|
||||
(defn format-waiting-message [event-data user-id toggles]
|
||||
"Format a message for Claude waiting event"
|
||||
(let [cwd (or (:cwd event-data) (System/getProperty "user.dir"))
|
||||
project-name (fs/file-name cwd)
|
||||
@@ -54,8 +55,9 @@
|
||||
;; Check if this is a permission prompt
|
||||
is-permission-prompt? (or (= notification-type "permission_prompt")
|
||||
(some? permission-mode))
|
||||
;; Ping user if configured and it's a permission prompt
|
||||
user-ping (when (and user-id is-permission-prompt?)
|
||||
;; Ping user if configured, it's a permission prompt, and ping toggle is enabled
|
||||
ping-enabled? (get toggles :permission-prompt-ping true)
|
||||
user-ping (when (and user-id is-permission-prompt? ping-enabled?)
|
||||
(str "<@" user-id "> "))]
|
||||
(str user-ping
|
||||
"⏳ **Claude is waiting** in `" project-name "`\n"
|
||||
@@ -99,10 +101,20 @@
|
||||
(let [perm-response (str/lower-case (str/trim (read-line)))
|
||||
perm-enabled? (not= perm-response "n")
|
||||
|
||||
;; Ask about ping preference if user ID provided
|
||||
ping-enabled? (if user-id
|
||||
(do
|
||||
(print "@mention you on permission prompts? (y/n, default: y): ")
|
||||
(flush)
|
||||
(let [ping-response (str/lower-case (str/trim (read-line)))]
|
||||
(not= ping-response "n")))
|
||||
true)
|
||||
|
||||
;; Build config with toggles
|
||||
config (cond-> {:webhook-url webhook-url
|
||||
:toggles {:idle-prompt idle-enabled?
|
||||
:permission-prompt perm-enabled?}}
|
||||
:permission-prompt perm-enabled?
|
||||
:permission-prompt-ping ping-enabled?}}
|
||||
user-id (assoc :user-id user-id))]
|
||||
|
||||
;; Create config directory
|
||||
@@ -112,7 +124,8 @@
|
||||
(spit config-file (pr-str config))
|
||||
(println "\n✓ Configuration saved to" config-file)
|
||||
(when user-id
|
||||
(println "✓ User ID configured - you will be @mentioned on permission prompts"))
|
||||
(println (str "✓ User ID configured - you will be @mentioned on permission prompts: "
|
||||
(if ping-enabled? "enabled" "disabled"))))
|
||||
(println (str "✓ Idle prompts: " (if idle-enabled? "enabled" "disabled")))
|
||||
(println (str "✓ Permission prompts: " (if perm-enabled? "enabled" "disabled")))
|
||||
(println "\nTest the webhook with: ./iamwaiting test"))))))
|
||||
@@ -177,7 +190,7 @@
|
||||
(println (str "Notification disabled for " toggle-key)))
|
||||
|
||||
;; Original notification logic
|
||||
(let [message (format-waiting-message event-data (:user-id config))
|
||||
(let [message (format-waiting-message event-data (:user-id config) (:toggles config))
|
||||
result (send-discord-webhook (:webhook-url config) message)]
|
||||
(if (:success result)
|
||||
(println "✓ Notification sent")
|
||||
@@ -191,6 +204,7 @@
|
||||
feature-key (case feature
|
||||
"idle-prompt" :idle-prompt
|
||||
"permission-prompt" :permission-prompt
|
||||
"permission-prompt-ping" :permission-prompt-ping
|
||||
nil)
|
||||
action-bool (case action
|
||||
"on" true
|
||||
@@ -200,7 +214,7 @@
|
||||
(cond
|
||||
(nil? feature-key)
|
||||
(do
|
||||
(println "❌ Invalid feature. Use: idle-prompt | permission-prompt")
|
||||
(println "❌ Invalid feature. Use: idle-prompt | permission-prompt | permission-prompt-ping")
|
||||
(System/exit 1))
|
||||
|
||||
(nil? action-bool)
|
||||
@@ -219,21 +233,27 @@
|
||||
(let [config (load-config)
|
||||
toggles (or (:toggles config)
|
||||
{:idle-prompt true
|
||||
:permission-prompt true})]
|
||||
:permission-prompt true
|
||||
:permission-prompt-ping true})
|
||||
user-id (:user-id config)]
|
||||
(println "📊 Current Toggle Status\n")
|
||||
(println (str "Idle prompts: " (if (:idle-prompt toggles) "✅ enabled" "❌ disabled")))
|
||||
(println (str "Permission prompts: " (if (:permission-prompt toggles) "✅ enabled" "❌ disabled")))))
|
||||
(println (str "Idle prompts: " (if (:idle-prompt toggles) "✅ enabled" "❌ disabled")))
|
||||
(println (str "Permission prompts: " (if (:permission-prompt toggles) "✅ enabled" "❌ disabled")))
|
||||
(println (str "Permission ping: " (if (:permission-prompt-ping toggles) "✅ enabled" "❌ disabled")))
|
||||
(when user-id
|
||||
(println (str "\n👤 User ID configured: " user-id)))))
|
||||
|
||||
(defn show-help []
|
||||
(println "iamwaiting - Send Discord notifications when Claude is waiting")
|
||||
(println "")
|
||||
(println "Usage:")
|
||||
(println " iamwaiting setup Set up Discord webhook configuration")
|
||||
(println " iamwaiting test Test webhook configuration")
|
||||
(println " iamwaiting toggle status Show current toggle status")
|
||||
(println " iamwaiting toggle idle-prompt <on|off> Toggle idle prompt notifications")
|
||||
(println " iamwaiting toggle permission-prompt <on|off> Toggle permission prompt notifications")
|
||||
(println " iamwaiting [event-data-json] Send waiting notification")
|
||||
(println " iamwaiting setup Set up Discord webhook configuration")
|
||||
(println " iamwaiting test Test webhook configuration")
|
||||
(println " iamwaiting toggle status Show current toggle status")
|
||||
(println " iamwaiting toggle idle-prompt <on|off> Toggle idle prompt notifications")
|
||||
(println " iamwaiting toggle permission-prompt <on|off> Toggle permission prompt notifications")
|
||||
(println " iamwaiting toggle permission-prompt-ping <on|off> Toggle @mentions on permission prompts")
|
||||
(println " iamwaiting [event-data-json] Send waiting notification")
|
||||
(println "")
|
||||
(println "Configuration:")
|
||||
(println " Config file: ~/.iamwaiting/config.edn")
|
||||
@@ -258,8 +278,9 @@
|
||||
"status" (show-toggle-status)
|
||||
"idle-prompt" (toggle-feature "idle-prompt" (nth args 2 nil))
|
||||
"permission-prompt" (toggle-feature "permission-prompt" (nth args 2 nil))
|
||||
"permission-prompt-ping" (toggle-feature "permission-prompt-ping" (nth args 2 nil))
|
||||
(do
|
||||
(println "Usage: iamwaiting toggle <status|idle-prompt|permission-prompt> [on|off]")
|
||||
(println "Usage: iamwaiting toggle <status|idle-prompt|permission-prompt|permission-prompt-ping> [on|off]")
|
||||
(System/exit 1))))
|
||||
"help" (show-help)
|
||||
"--help" (show-help)
|
||||
|
||||
Reference in New Issue
Block a user