@misterhuydo/sentinel 1.4.55 → 1.4.57

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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "message": "Auto-checkpoint at 2026-03-25T12:06:52.775Z",
3
- "checkpoint_at": "2026-03-25T12:06:52.777Z",
2
+ "message": "Auto-checkpoint at 2026-03-25T12:11:43.792Z",
3
+ "checkpoint_at": "2026-03-25T12:11:43.793Z",
4
4
  "active_files": [],
5
5
  "notes": [],
6
6
  "mtime_snapshot": {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@misterhuydo/sentinel",
3
- "version": "1.4.55",
3
+ "version": "1.4.57",
4
4
  "description": "Sentinel — Autonomous DevOps Agent installer and manager",
5
5
  "bin": {
6
6
  "sentinel": "./bin/sentinel.js"
@@ -2492,6 +2492,7 @@ async def _run_tool(name: str, inputs: dict, cfg_loader, store, slack_client=Non
2492
2492
 
2493
2493
  if name == "install_tool":
2494
2494
  import subprocess as _sp
2495
+ import os as _os
2495
2496
  tool_name = inputs.get("tool_name", "").strip()
2496
2497
  if not tool_name:
2497
2498
  return json.dumps({"error": "tool_name is required"})
@@ -2715,9 +2716,12 @@ async def _handle_with_cli(
2715
2716
  if not reply:
2716
2717
  if tools_ran:
2717
2718
  reply = f":white_check_mark: Done ({', '.join(tools_ran)})."
2718
- else:
2719
+ elif len(message.strip()) <= 12 and not any(c.isalpha() and c not in 'helo wrdHELOWRD' for c in message):
2720
+ # Only greet on bare hello/hi/empty — never on real commands
2719
2721
  greeting = f"Hi {user_name}! " if user_name else "Hi! "
2720
2722
  reply = f"{greeting}I'm Sentinel, your autonomous DevOps agent. How can I help you?"
2723
+ else:
2724
+ reply = ":thinking_face: I didn't produce a response — please try rephrasing."
2721
2725
 
2722
2726
  history.append({"role": "user", "content": message})
2723
2727
  history.append({"role": "assistant", "content": reply})
@@ -2891,9 +2895,11 @@ async def _handle_with_api(
2891
2895
  )
2892
2896
  if tools_ran_this_session:
2893
2897
  reply = ":white_check_mark: Done."
2894
- else:
2898
+ elif len(message.strip()) <= 12:
2895
2899
  greeting = f"Hi {user_name}! " if user_name else "Hi! "
2896
2900
  reply = f"{greeting}I'm Sentinel, your autonomous DevOps agent. How can I help you?"
2901
+ else:
2902
+ reply = ":thinking_face: I didn't produce a response — please try rephrasing."
2897
2903
  # Heuristic override: if reply ends with a question, Claude is waiting for input
2898
2904
  if is_done and re.search(r'\?\s*$', reply):
2899
2905
  is_done = False