@misterhuydo/sentinel 1.0.57 → 1.0.59
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/.cairn/.hint-lock
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2026-03-22T14:
|
|
1
|
+
2026-03-22T14:37:46.791Z
|
package/.cairn/session.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"message": "Auto-checkpoint at 2026-03-22T14:
|
|
3
|
-
"checkpoint_at": "2026-03-22T14:
|
|
2
|
+
"message": "Auto-checkpoint at 2026-03-22T14:38:12.904Z",
|
|
3
|
+
"checkpoint_at": "2026-03-22T14:38:12.905Z",
|
|
4
4
|
"active_files": [],
|
|
5
5
|
"notes": [],
|
|
6
6
|
"mtime_snapshot": {}
|
package/package.json
CHANGED
|
@@ -138,6 +138,7 @@ Don't pad responses. Don't say "Great question!" or "Certainly!".
|
|
|
138
138
|
If you don't know something, use a tool to find out before saying you don't know.
|
|
139
139
|
|
|
140
140
|
When the engineer's request is fully handled, end your LAST message with the token: [DONE]
|
|
141
|
+
Always write at least one sentence of actual reply before [DONE] — never send [DONE] alone.
|
|
141
142
|
If you need a follow-up from them, do NOT include [DONE] — wait for their next message.
|
|
142
143
|
"""
|
|
143
144
|
|
|
@@ -954,6 +955,7 @@ async def _handle_with_cli(
|
|
|
954
955
|
cfg_loader,
|
|
955
956
|
store,
|
|
956
957
|
slack_client=None,
|
|
958
|
+
user_name: str = "",
|
|
957
959
|
) -> tuple[str, bool]:
|
|
958
960
|
"""Fallback: use `claude --print` for users without an Anthropic API key."""
|
|
959
961
|
status_json = await _run_tool("get_status", {"hours": 24}, cfg_loader, store)
|
|
@@ -988,6 +990,7 @@ async def _handle_with_cli(
|
|
|
988
990
|
|
|
989
991
|
prompt = (
|
|
990
992
|
_SYSTEM
|
|
993
|
+
+ (f"\nYou are speaking with: {user_name}" if user_name else "")
|
|
991
994
|
+ f"\n\nCurrent time: {ts}"
|
|
992
995
|
+ f"\nSentinel status: {'⏸ PAUSED' if paused else '▶ RUNNING'}"
|
|
993
996
|
+ f"\nManaged repos: {', '.join(repos) if repos else '(none configured)'}"
|
|
@@ -1049,6 +1052,7 @@ async def handle_message(
|
|
|
1049
1052
|
cfg_loader,
|
|
1050
1053
|
store,
|
|
1051
1054
|
slack_client=None,
|
|
1055
|
+
user_name: str = "",
|
|
1052
1056
|
) -> tuple[str, bool]:
|
|
1053
1057
|
"""
|
|
1054
1058
|
Process one user message through the Sentinel Boss (Claude with tool use).
|
|
@@ -1074,7 +1078,7 @@ async def handle_message(
|
|
|
1074
1078
|
|
|
1075
1079
|
api_key = cfg_loader.sentinel.anthropic_api_key or os.environ.get("ANTHROPIC_API_KEY", "")
|
|
1076
1080
|
if not api_key:
|
|
1077
|
-
return await _handle_with_cli(message, history, cfg_loader, store, slack_client=slack_client)
|
|
1081
|
+
return await _handle_with_cli(message, history, cfg_loader, store, slack_client=slack_client, user_name=user_name)
|
|
1078
1082
|
|
|
1079
1083
|
client = anthropic.Anthropic(api_key=api_key)
|
|
1080
1084
|
|
|
@@ -1085,6 +1089,7 @@ async def handle_message(
|
|
|
1085
1089
|
known_projects = [_read_project_name(d) for d in _find_project_dirs()]
|
|
1086
1090
|
system = (
|
|
1087
1091
|
_SYSTEM
|
|
1092
|
+
+ (f"\nYou are speaking with: {user_name}" if user_name else "")
|
|
1088
1093
|
+ f"\n\nCurrent time: {ts}"
|
|
1089
1094
|
+ f"\nSentinel status: {'⏸ PAUSED' if paused else '▶ RUNNING'}"
|
|
1090
1095
|
+ f"\nManaged repos: {', '.join(repos) if repos else '(none configured)'}"
|
|
@@ -291,7 +291,7 @@ async def _dispatch(event: dict, client, cfg_loader, store) -> None:
|
|
|
291
291
|
text = _strip_mention(event.get("text", "")).strip()
|
|
292
292
|
|
|
293
293
|
if not text:
|
|
294
|
-
|
|
294
|
+
text = "hello"
|
|
295
295
|
|
|
296
296
|
# Allowlist check — if SLACK_ALLOWED_USERS is configured, silently ignore everyone else
|
|
297
297
|
allowed = cfg_loader.sentinel.slack_allowed_users
|
|
@@ -330,6 +330,7 @@ async def _run_turn(session: _Session, message: str, client, cfg_loader, store)
|
|
|
330
330
|
reply, is_done = await handle_message(
|
|
331
331
|
message, session.history, cfg_loader, store,
|
|
332
332
|
slack_client=client,
|
|
333
|
+
user_name=session.user_name,
|
|
333
334
|
)
|
|
334
335
|
except Exception as e:
|
|
335
336
|
logger.exception("Sentinel Boss error: %s", e)
|